【发布时间】:2014-04-03 01:45:48
【问题描述】:
我正在向作为 Gridview 中的列之一的 dropDownlist 动态添加值。
问题是添加新行时下拉列表中选择的值没有保存或维护?知道我可能做错了什么。这是我的代码..
这是我的网格视图
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" OnDataBound="GridView1_DataBound">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:boundfield datafield="ID" headertext="categoryid" />
<asp:boundfield datafield="univirsity" headertext="category name" />
<asp:templatefield headertext="products">
<itemtemplate>
<asp:dropdownlist id="dropdownlist1" runat="server">
</asp:dropdownlist>
</itemtemplate>
</asp:templatefield>
</Columns>
</asp:GridView>
这是在单击按钮时将数据动态绑定到 Gridview 的代码。
if (!Page.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", System.Type.GetType("System.Int32"));
dt.Columns.Add("univirsity", System.Type.GetType("System.Int32"));
dt.Columns.Add("major", System.Type.GetType("System.Int32"));
Session["MyDataTable"] = dt;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
DataTable t = (DataTable)Session["MyDataTable"];
DataRow row1 = t.NewRow();
row1["ID"] = t.Rows.Count + 1;
row1["univirsity"] = 3;
// row1["major"] = 31;
t.Rows.Add(row1);
Session["MyDataTable"] = t;
GridView1.DataSource = t;
GridView1.DataBind();
}
protected void GridView1_DataBound(object sender, EventArgs e)
{
//addControl();
ArrayList list = new ArrayList();
list.Add("DMG");
list.Add("SVC");
foreach (GridViewRow row in GridView1.Rows)
{
// int key = (int)GridView1.DataKeys[row.RowIndex].Value;
if (row.RowType == DataControlRowType.DataRow)
{
DropDownList dl = (DropDownList)row.FindControl("dropdownlist1");
string sel = dl.SelectedValue;
if (!String.IsNullOrEmpty(sel))
{
dl.DataSource = list;
dl.DataBind();
dl.SelectedValue = sel;
}
else
{
dl.DataSource = list;
dl.DataBind();
}
}
}
}
【问题讨论】:
标签: c# asp.net gridview drop-down-menu datatable