检查复选框状态,这是在Dataitemtemplate devexpress gridview当按钮从后面的代码点击

本文关键字:按钮 代码 gridview 状态 复选框 devexpress Dataitemtemplate 检查 | 更新日期: 2023-09-27 18:17:10

我想检查复选框的状态,这是在devexpress网格视图中的数据项模板内,当用户单击ok按钮这是我的aspx代码gridviewColumn

<Columns>
                                    <dx:GridViewDataColumn Caption="Data Source" FieldName="dataSrc" VisibleIndex="1"></dx:GridViewDataColumn>
                                    <dx:GridViewDataColumn Caption="Download" FieldName="dwnloadConfig" VisibleIndex="2" Width="70px" >
                                        <DataItemTemplate>
                                            <dx:ASPxCheckBox ID="cbDwnloadConfig" ClientInstanceName="cbDwnloadConfig
                                                " runat="server" >
                                            </dx:ASPxCheckBox>
                                        </DataItemTemplate>                                        
                                </Columns>

现在当ok按钮被点击时,我想检查服务器端cbDwnloadConfig的状态

我在cs文件中使用了以下代码来访问数据项模板控件,但是checked状态总是为false。

ASPxCheckBox cbDwnload = gvDataSrc.FindRowCellTemplateControl(rwIndex[i], gvDataSrc.Columns["dwnloadConfig"] as GridViewDataColumn, "cbDwnloadConfig") as ASPxCheckBox;

那么,检查dataitemtemplate内部的复选框状态的正确方法是什么?

检查复选框状态,这是在Dataitemtemplate devexpress gridview当按钮从后面的代码点击

可能是你在PageLoad方法中绑定了网格视图,这可能会导致这种行为。

你应该按照以下方式绑定你的网格视图

if(!page.IsPostBack)
{
 //BIND YOUR GRID
}
上面的

将防止在单击按钮时重新绑定gridview

对于那些有同样问题的人,我已经找到了解决问题的方法,我必须使用回调来处理这个问题。

<Columns>
                <dx:GridViewDataColumn Caption="Data Source" FieldName="dataSrc" VisibleIndex="1"></dx:GridViewDataColumn>
              <dx:GridViewDataColumn Caption="Download" FieldName="dwnloadConfig" VisibleIndex="2" Width="70px" >
                <DataItemTemplate>
                   <dx:ASPxCheckBox ID="cbDwnloadConfig" ClientInstanceName="cbDwnloadConfig" runat="server" >
             <ClientSideEvents CheckedChanged="function(s,e)
                                                    {dwnloadSrc.PerformCallback(s.GetChecked());
                                                    }"></ClientSideEvents>
                 </dx:ASPxCheckBox>
               </DataItemTemplate>                                        
</Columns>
c#

 protected void dwnloadSrc_OnCallback(object source, CallbackEventArgs e)
{
    var param = e.Parameter;
    //now check the paramater
    //and do your magic 
}

你也可以一次从前端/aspx传递两个或多个参数只需这样做:

dwnloadSrc.PerformCallback(s.GetChecked()+'_'+ gv.FocusedRowsIndex())

和后面的代码,你可以检查参数:

    var param = e.Parameter;
    var newParam = param.Split('_');
    bool state = Convert.ToBoolean(newParam[0]);
    int rwIndex = Convert.ToInt32(newParam[1]);

谢谢!