我有一个带有值的数据表,我需要将它们作为默认值分配给按钮点击事件的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();
}
}
如果我做错了什么,有人可以纠正我吗?
答案 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。