我有一个页面,我们称之为SourceTypes.aspx,它有一个显示源类型列表的GridView. GridView的一部分是DataKey,SourceTypeID.如果源TypeID通过查询sting传递给页面,如何根据SourceTypeID将Gridview置于编辑模式以获取相应的行?
GridView绑定到sqlDataSource对象.
我有一种感觉,当答案出现时我会踢自己!
我已经看了Putting a gridview row in edit mode programmatically,但它有些缺乏具体细节
解决方法
当你想根据数据将其置于编辑模式时,这有点棘手.您告诉datagrid哪些显示的行是可编辑的,而不是您想要编辑哪些数据,因此您需要遍历网格中的每一行,查看它是否与id匹配,并将EditItemIndex设置为适当的价值和重新绑定.
您可以在绑定之前查看源数据并从中获取行号,但是您可能遇到分页,排序等问题.
重新绑定网格有点麻烦,但我想不出更好的方法.
public partial class _Default : System.Web.UI.Page { private DataTable GetData() { DataTable tTable = new DataTable(); tTable.Columns.Add(new DataColumn("Column1",typeof(int))); tTable.Columns.Add(new DataColumn("Column2",typeof(string))); DataRow tRow = tTable.NewRow(); tRow["Column1"] = 1; tRow["Column2"] = "Test1"; tTable.Rows.Add(tRow); tRow = tTable.NewRow(); tRow["Column1"] = 2; tRow["Column2"] = "Test2"; tTable.Rows.Add(tRow); tRow = tTable.NewRow(); tRow["Column1"] = 3; tRow["Column2"] = "Test3"; tTable.Rows.Add(tRow); tRow = tTable.NewRow(); tRow["Column1"] = 4; tRow["Column2"] = "Test4"; tTable.Rows.Add(tRow); tRow = tTable.NewRow(); tRow["Column1"] = 5; tRow["Column2"] = "Test5"; tTable.Rows.Add(tRow); return tTable; } private void BindData() { DataTable tTable = GetData(); TestGrid.DataSource = tTable; TestGrid.DataBind(); if (!String.IsNullOrEmpty(Request.QueryString["edit"])) { foreach (DataGridItem tRow in TestGrid.Items) { if (tRow.Cells[0].Text == Request.QueryString["edit"]) TestGrid.EditItemIndex = tRow.ItemIndex; } TestGrid.DataBind(); } } protected void Page_Load(object sender,EventArgs e) { if (!Page.IsPostBack) BindData(); } }
您应该能够启动它(显然将数据网格添加到ASPX中)然后在URL的末尾放置?edit =以使其在编辑模式下打开相关条目.