在现有行下方的网格视图中添加列表项选中的值

时间:2015-08-17 12:57:40

标签: c# asp.net

您好我想在网格视图(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

1 个答案:

答案 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);
                }
            }