当从后面的代码中单击按钮时,检查Dataitemtemplate devexpress gridview内的复选框状态

时间:2014-08-08 10:24:04

标签: c# asp.net aspxgridview

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

<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>

现在单击确定按钮时,我想检查服务器端的cbDwnloadConfig状态

我在cs文件上使用以下代码来访问dataitem模板控件,但是检查状态始终为false。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

上面将阻止在单击按钮时重新绑定gridview。

答案 1 :(得分:0)

对于那些有同样问题的人,我找到了问题的解决方案, 我不得不使用回调来解决这个问题。

<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]);

谢谢!