ListView中含有的CheckBoxList - 选择的项目没有显示为已签

我有一个ListViewEditItemTemplate调用的方法onItemEditing

在我ListView我有一个CheckBoxList使用绑定LINQ

在我onItemEditing的方法,我想检查某些CheckBoxes ,如果他们出现在查找表链接用户部门。

然而,当我加载EditItemTemplate没有任何的CheckBoxes是,即使在所选择的,我将它们选中onItemEditing方法。

这里的方法:

protected void onItemEditing(object sender, ListViewEditEventArgs e) { ListView1.EditIndex = e.NewEditIndex; ListView1.DataBind(); int regId = Convert.ToInt32(((Label)ListView1.Items[e.NewEditIndex].FindControl("LblRegId")).Text); CheckBoxList cbl = (CheckBoxList) ListView1.Items[e.NewEditIndex].FindControl("chkLstSectors"); //test to see if forcing first check box to be selected works - doesn't work cbl.Items[0].Selected = true; SqlConnection objConn = new SqlConnection(ConfigurationManager.ConnectionStrings["DaresburyConnectionString"].ToString()); SqlCommand objCmd = new SqlCommand("select * from register_sectors where register_id= " + regId, objConn); objConn.Open(); SqlDataReader objReader = objCmd.ExecuteReader(); if (objReader != null) { while (objReader.Read()) { ListItem currentCheckBox = cbl.Items.FindByValue(objReader["sector_id"].ToString()); if (currentCheckBox != null) { currentCheckBox.Selected = true; } } } }

任何想法如何解决这个问题?

--------------解决方案-------------

问题是ListView控件是再次被束缚的CheckBoxList绑定后。

我删除了绑定和它的作品!

我希望我不是太晚了我的回答;)

我在其中要数据绑定像其他控件ListView中的CheckBoxList。 在数据库中的值是从该枚举的计算值:

public enum SiteType
{
Owner = 1,
Reseller = 2,
SubReseller = 4,
Distributor = 8
Manufacturer = 16,
Consumer = 32
}

如果该值为24,这意味着分销商和制造商(8 + 16)。

我添加了一个HiddenField到EditItem在我的ListView数据绑定的值:

<EditItemTemplate>
<tr>
<td>
<asp:CheckBoxList ID="cblSiteTypes" runat="server" RepeatLayout="Flow"
DataSourceID="ObjectDataSource4" DataTextField="Key" DataValueField="Value" />
<asp:HiddenField ID="hfSiteTypes" runat="server" Value='<%# Bind("SiteType") %>' OnDataBinding="hfSiteTypesBnd" />
</td>
</tr>
<!-- other data... -->
</EditItemTemplate>

该的CheckBoxList是通过另一个数据源,它返回从枚举数据Dictionary对象填充。 在后面的代码我用的是HiddenField供选择的OnDataBinding方法:

protected void hfSiteTypesBnd( object sender, EventArgs e )
{
// read the value
HiddenField hf = (HiddenField)sender;
short val = Convert.ToInt16( hf.Value );
// find the checkboxlist
CheckBoxList cblSiteTypes = (CheckBoxList)hf.Parent.FindControl( "cblSiteTypes" );
// clear the selection (may be not needed)
cblSiteTypes.ClearSelection();
// for each item
foreach ( ListItem li in cblSiteTypes.Items )
{
// get the value from each item and...
short v = Convert.ToInt16( li.Value );
// ...look up whether this value is matching or not
if ( ( val & v ) == v ) li.Selected = true;
}
}

等瞧!

分类:C# 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.426 (s). 10 q(s)