您好我想在网格视图(Asp.net)中添加我的checkedboxList选中的值,在现有行下面我该怎么做。这是我尝试的代码,但是没有正确添加
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
// check view state is not null
if (ViewState["MailTracking"] != null)
{
//get datatable from view state
dt = (DataTable)ViewState["MailTracking"];
DataRow oItem = null;
if (dt.Rows.Count > 0)
{
for (int i = 1; i <= dt.Rows.Count; i++)
{
oItem = dt.NewRow();
string strValue = "";
for (int k = 0; k < CheckBoxListBranch.Items.Count; k++)
{
if (CheckBoxListBranch.Items[k].Selected)
{
strValue = CheckBoxListBranch.Items[k].Value;
oItem[0] = CheckBoxListBranch.Items[k].Text;
}
}
}
//Remove initial blank row
if (dt.Rows[0][0].ToString() == "")
{
dt.Rows[0].Delete();
dt.AcceptChanges();
}
dt.Rows.Add(oItem);
ViewState["MailTracking"] = dt;
GVDisplay.DataSource = dt;
GVDisplay.DataBind();
}
}
}
我的asp:CheckBoxList
ID为:CheckBoxListBranch
我在onselectedindexchanged="CheckBoxList1_SelectedIndexChanged"
内使用了asp:CheckBoxList
。
答案 0 :(得分:0)
我认为你的意思是以下代码声明
oItem[0] = CheckBoxListBranch.Items[k].Text;
实际上,每当你将元素添加/重新添加到行的第一列时,请注意它是oItem[k]
oItem[k] = CheckBoxListBranch.Items[k].Text;
根据您的评论:在这种情况下,您应该将代码行dt.Rows.Add(oItem);
移到for
循环中,如下所示
for (int k = 0; k < CheckBoxListBranch.Items.Count; k++)
{
if (CheckBoxListBranch.Items[k].Selected)
{
strValue = CheckBoxListBranch.Items[k].Value;
oItem[0] = CheckBoxListBranch.Items[k].Text;
dt.Rows.Add(oItem);
}
}