AspxGrid模板列中Checkbox 值在客户端的处理
来源:互联网 发布:淘宝联盟里活动走低佣 编辑:程序博客网 时间:2024/05/04 01:11
前一篇文章用的是服务器模式,如果改用客户端模式,则也不能取到Items中的关于数据的行.
本文主要讲述的是使用客户端模式,在客户端和服务器都能访问模板列中定义的CHECKBOX的值.
aspxgrid的定义
<dxwg:ASPxGrid runat="server" AutoGenerateColumns="False" Width="592px" ID="ASPxGrid2"
TabIndex="0" DataKeyField="OID" NavigatorIndent="1px" PageSize="0" Height="295px" >
<Columns>
<dxwg:BoundTemplateColumn VisibleIndex="0" DataField="Chk" HeaderText="选中" Width="53px">
<EditItemStyle HorizontalAlign="Center"></EditItemStyle>
<ItemTemplate>
<asp:CheckBox ID="CheckBox2" runat="server"></asp:CheckBox>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server"></asp:CheckBox>
</EditItemTemplate>
</dxwg:BoundTemplateColumn>
<dxwg:BoundColumn DataField="OID" Visible="False">
</dxwg:BoundColumn>
<dxwg:BoundColumn DataField="GoodKind" Visible="False">
</dxwg:BoundColumn>
<dxwg:BoundColumn HeaderText="类型" DataField="KindName" VisibleIndex="1" Width="124px"
ReadOnly="True">
</dxwg:BoundColumn>
<dxwg:BoundColumn HeaderText="品名" DataField="ProductID" VisibleIndex="2" Width="124px"
ReadOnly="True">
</dxwg:BoundColumn>
<dxwg:BoundColumn HeaderText="规格" DataField="GoodStyle" VisibleIndex="3" Width="124px"
ReadOnly="True">
</dxwg:BoundColumn>
<dxwg:BoundColumn HeaderText="单位" DataField="Unit" VisibleIndex="4" Width="50px"
ReadOnly="True">
</dxwg:BoundColumn>
<dxwg:BoundColumn HeaderText="长度(米)" DataField="Length" VisibleIndex="5" Width="87px"
ReadOnly="True">
</dxwg:BoundColumn>
</Columns>
</dxwg:aspxgrid>
上面红色的是定义的一个绑定模板列,要根据绑定上来的值来处理checkbox的状态,需要我们自己来处理网格的呈现。因此要增加如下的代码,下面的CHK是一个列名。主要用于定义绑定网格时,单元格如何显示及取值时的处理
<ClientSideEvents>
<BindCell>
function(source,e){ if(e.column.GetDataControllerColumn().GetName() == "Chk"){ var
checkBox = ASPxClientUtils.GetChildByTagName(e.htmlElement, "INPUT", 0); checkBox.checked
= e.row.GetDataControllerRow().GetValueByColumnName("Chk"); checkBox.onclick = new
Function("OnCheckBoxChanged(this, '" + e.row.GetKeyValue() + "')"); } }</BindCell>
<GetEditValue>
function(source,e){ if(e.column.GetDataControllerColumn().GetName() == "Chk"){ var
checkBox = ASPxClientUtils.GetChildByTagName(e.htmlElement, "INPUT", 0); e.row.GetDataControllerRow().SetValueByColumnName("Chk",
checkBox.checked); } }</GetEditValue>
<BindEditCell>
function(source,e){ if(e.column.GetDataControllerColumn().GetName() == "Chk"){ var
checkBox = ASPxClientUtils.GetChildByTagName(e.htmlElement, "INPUT", 0); checkBox.checked
= e.row.GetDataControllerRow().GetValueByColumnName("Chk"); } }</BindEditCell>
</ClientSideEvents>
在checkbox选中后,还要同步checkbox和绑定的列的值,因此要加一段处理代码OnCheckBoxChanged
function OnCheckBoxChanged(sender, key){
// ctl00_phContent_ASPxGrid2为页面中网格控件的ID,要看你具体的页面
ctl00_phContent_ASPxGrid2.BeginUpdate();
var savedFocusedRow = ctl00_phContent_ASPxGrid2.GetFocusedRow();
var row = ctl00_phContent_ASPxGrid2.GetRowByKeyValue(ctl00_phContent_ASPxGrid2.GetGroupCount(), key);
ctl00_phContent_ASPxGrid2.EditRow(row);
row.GetDataControllerRow().SetValueByColumnName("Chk", sender.checked);
ctl00_phContent_ASPxGrid2.Post();
ctl00_phContent_ASPxGrid2.SetFocusedRow(savedFocusedRow);
ctl00_phContent_ASPxGrid2.EndUpdate();
event.cancelBubble = true;
}
客户端的代码差不多了,在服务器只要绑定数据上来就行了。数据只要包含在列中定义的那些字段就行。
不过当回发到服务器后,还有一点点的小bug,就是当一个checkbox选中后,再去点它,相当没有选,可是到服务器后显示的却是它的状态已改变了,如绑定的是datatable,则调用datatable.getchanges(),还是可以获取选中的行,而实际上,我们却没有选中。在aspxgrid 的updatecommand事件中也表现为如些。
因此建立对数据源进行循环判断来达到检测用户是否选取的目的。
- AspxGrid模板列中Checkbox 值在客户端的处理
- aspxgrid取模板列(checkbox)示例
- aspxgrid客户端新增一行时通过回调来获取某一列的值
- 利用Session纪录datagrid模板列中CheckBox的状态
- 利用Session纪录datagrid模板列中CheckBox的状态
- 利用Session纪录datagrid模板列中CheckBox的状态
- ASP.NET DEMO 14: 如何在 GridView/DataGrid 模板列中使用自动回发的 CheckBox/DropDownList
- ASP.NET DEMO 14: 如何在 GridView/DataGrid 模板列中使用自动回发的 CheckBox/DropDownList
- DataGrid 模板列中全选CheckBox 并在删除选中后给出选择删除提示
- 关于datagridview中checkbox列在选中行的情况下无法操作值
- 在jsp中获取已选中checkbox其他列的值
- DataGrid模板列应用——在DataGrid中用CheckBox控制TextBox的Enabled属性
- 在UltraWebGrid中增加CheckBox列
- 对利用Session纪录datagrid模板列中CheckBox的状态的一点改进
- GridView中模板列中checkbox单选 (转)
- GridView/DataGrid 模板列中使用自动回发的 CheckBox/DropDownList
- 模板列中CheckBox改变GridView行的颜色(2) (.cs页面实现)
- GridView模板列中使用自动回发的CheckBox/DropDownList
- 系统变量管理器
- 诚敬教育
- XQuery使用入门(一)
- 好高兴啊! 有人转载我的文章
- 两个莫名其妙的问题
- AspxGrid模板列中Checkbox 值在客户端的处理
- IBM一道面试题及解答
- java的传值问题
- 昨天内部haskell freetalk的ppt和源码
- 使用hibernate3和Spring解决Oracle大字段(长文本)问题
- asp.net执行PING
- 爆笑的帖子
- 域名转换IP
- 奇妙的图片