ASP.Net Gridview,如何激活基于ID的编辑模式(DataKey)

前端之家收集整理的这篇文章主要介绍了ASP.Net Gridview,如何激活基于ID的编辑模式(DataKey)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个页面,我们称之为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 =以使其在编辑模式下打开相关条目.

猜你在找的asp.Net相关文章