Infragistics web datagrid标题复选框事件问题

时间:2012-10-31 05:00:44

标签: infragistics webdatagrid

ISSUE

我是infragistics的新手,我在我的页面中使用webdatagrid。我的网格有一个复选框作为其中一个字段。标题字段也是一个复选框。

在服务器端事件(我需要在服务器事件中没有客户端事件:))的标题复选框。我需要绑定网格。

如果选中标题复选框,我只需显示活动记录,如果未选中,则需要显示所有记录。

我在标题复选框的服务器函数中实现此逻辑,并且在此事件中网格没有绑定(即值不会更改)。

我正在为这个修复工作一个多星期了。请帮忙

请参阅下面的代码...........

ASPX

<ig:WebDataGrid ID="WebDataGrid1" runat="server" EnableDataViewState="true" ViewStateMode="Enabled" Height="100%" Width="100%" AutoGenerateColumns="False" OnColumnSorted="WebDataGrid1_ColumnSorted" DataKeyFields="Id">
<Columns>
<ig:BoundDataField DataFieldName="Id" Hidden="True" Key="Id">
<Header Text="BoundColumn_0" />
</ig:BoundDataField>
<ig:BoundDataField DataFieldName="Name" Key="Name">
<Header Text="Name"></Header>
</ig:BoundDataField>
<ig:BoundDataField DataFieldName="ShortName" Key="ShortName">
<Header Text="ShortName"></Header>
</ig:BoundDataField>
<ig:BoundDataField DataFieldName="IsoCode" Key="IsoCode">
<Header Text="IsoCode"></Header>
</ig:BoundDataField>
<ig:TemplateDataField Key="IsActive" Header-Text="IsActive">
<HeaderTemplate>
<asp:CheckBox ID="chkChildIsActive" runat="server" Checked="true" 
Text="IsActive" AutoPostBack="True" 
oncheckedchanged="chkChildIsActive_CheckedChanged">
</asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkHIsActive" runat="server" Checked='<%# DataBinder.Eval(((Infragistics.Web.UI.TemplateContainer)Container).DataItem, "IsActive") %>'>
</asp:CheckBox>
</ItemTemplate>
<Header Text="IsActive" />
</ig:TemplateDataField>
</Columns>
<ClientEvents Click="WebDataGrid1_SingleClick" DoubleClick="WebDataGrid1_DoubleClick" />
<Behaviors>
<ig:Paging PageSize="15" QuickPages="9">
<PagerTemplate>
<uc1:CustomerPagerControl ID="CustomerPager" runat="server" />
</PagerTemplate>
</ig:Paging>
<ig:Sorting>
</ig:Sorting>
<ig:RowSelectors>
</ig:RowSelectors>
<ig:Selection RowSelectType="Single" CellClickAction="Row" CellSelectType="None">
</ig:Selection>
</Behaviors>
</ig:WebDataGrid>

ASPX.cs

//页面加载绑定数据到网格

protected void Page_Load(object sender, EventArgs e)

{
if (!IsPostBack)
{
List<Port> port = PortManager.PortListTestPaging(true);
WebDataGrid1.DataSource = port;
WebDataGrid1.DataBind();
}
}



//Checkbox Event

protected void chkChildIsActive_CheckedChanged(object sender, EventArgs e)
{

CheckBox chkChildIsActive = (CheckBox)sender;

List<Port> port = PortManager.PortListTestPaging(chkChildIsActive.Checked);

WebDataGrid1.DataSource = port;
WebDataGrid1.DataBind();

}

我在Infragistics论坛上尝试修复:

  1. EnableDataViewState = false:如果我们将此属性赋予网格,则在复选框事件中,网格将清除所有数据(并且不会触发复选框事件)。

  2. EnableDataViewState = true和WebDataGrid1.ClearDataSource():然后我在复选框事件中发生了以下错误“找到了具有相同ID的多个控件'xyz0_4'”我已经通过以下链接进行了修复但失败了。 http://www.infragistics.com/community/forums/p/65065/329361.aspx

  3. WebDataGrid1.Rows.Clear()&amp; //WebDataGrid1.Columns.Clear():两者都不起作用。

  4. 我想知道问题是什么,所以对于按钮事件的相同代码,网格外部的按钮是有效的。所以我认为它可能错误地给出了webdatagrid中的一些属性的一些问题。我已经完成了所有可能的工作。

  5. 谢谢, Sankardeep V

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是将您的逻辑从CheckChanged事件处理程序重新绑定到Page_PreRender事件。为此,您需要存储CheckChanged事件是否被触发以及复选框的值是在页面的私有变量中,然后在PreRender事件中检查它们。这应该与按钮单击中的操作相同。