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

本文关键字:添加 列表 视图 网格 | 更新日期: 2023-09-27 18:08:22

嗨,我想添加我的checkedboxList复选值内网格视图(Asp.net),下面现有的行我怎么能做到这一点。这是我尝试的代码,但这是不正确的添加

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我在asp:CheckBoxList里面用了onselectedindexchanged="CheckBoxList1_SelectedIndexChanged"

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

我想你是指下面的代码语句

  oItem[0] = CheckBoxListBranch.Items[k].Text;

实际上是,注意它是oItem[k] else每次添加/读取元素到行

的第一列时
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);
                }
            }