微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 =以使其在编辑模式下打开相关条目.

原文地址:https://www.jb51.cc/aspnet/251733.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐