在GridView中将DataTable值设置为DropDown选定值

时间:2018-02-12 11:34:59

标签: c# asp.net .net gridview

我有一个带有值的数据表,我需要将它们作为默认值分配给按钮点击事件的gridview下拉列表。我尝试编写下面的代码,它只保留最后一行的值。我如何保留所有行?

我是否缺少向GridView添加行?

例如: DataTable现在有三行,在GridView中只有第三行具有DataTable的默认值,第一行是空的。

DataTable dtValues = dtSource;                    
if (dtValues.Rows.Count > 0)
{
   for (int i = 1; i <= dtValues.Rows.Count; i++)
   {
       RadComboBox ID = (RadComboBox)gvGrid.Rows[i].Cells[1].FindControl("radID");
       RadComboBox Names = (RadComboBox)gvGrid.Rows[i].Cells[2].FindControl("radName");
       ID.SelectedValue = dtValues.Rows[i]["ID"].ToString();
       Names.SelectedValue = dtValues.Rows[i]["Name"].ToString();
    }
}

如果我做错了什么,有人可以纠正我吗?

1 个答案:

答案 0 :(得分:0)

您应该使用GridView的RowDataBound事件,如下所示,并将其作为DataSource从DataTable填充:

-1

注意:不要忘记将OnRowDataBound事件protected void gvGrid_RowDataBound(object sender, GridViewRowEventArgs e) { // check if row is not in edit mode if (e.Row.RowType == DataControlRowType.DataRow) { DataTable dtValues = dtSource; // get dropdownlist from gridview var ddl = e.Row.FindControl("YourDropDown") as DropDownList; if (ddl != null) { ddl.DataSource = dtValues; ddl.DataTextField = "Name"; // add text to dropdownlist ddl.DataValueField = "ID"; // add value to dropdownlist ddl.DataBind(); // add default selected value ddl.Items.Insert(0, new ListItem("----- Select a Value -----", "0")); } } } 添加到GridView。