【问题标题】:Creating a single "view" button method for gridview为 gridview 创建单个“视图”按钮方法
【发布时间】:2016-07-15 21:59:48
【问题描述】:

我只是想为 gridview 的特定行中的数据创建一个“查看”按钮,然后将其传递给 Silverlight 查看器。 这是我试图弄清楚的“viewall”按钮。

protected void btnViewAll_Click(object sender, EventArgs e)
    {
        string id = HttpContext.Current.Request.Headers["id"];
#if DEBUG
        if (id == null)
            id = "111"; // Use my own id for testing locally
#endif
        using (aDataContext dc = new aDataContext())
        {
            var query = (from a in dc.aLists
                         where a.ID == id
                         select new
                         {
                             a.aNumber,
                             a.bNumber,
                             a.cNumber,
                             a.dNumber,
                         }
                             );

            List<aListItem> List = new List<aListItem>();
            foreach (var queryItem in query)
            {
                aList.Add(new aListItem()
                {
                    aNumber = queryItem.aNumber,
                    bNumber = queryItem.bNumber,
                    cNumber = queryItem.cNumber,
                    dNumber = queryItem.dNumber
                });
            }
            Session["aList"] = aList;
        }
        Session["Database"] = null;
        Response.Redirect("Viewer.aspx" + "?UseList=true");
    }

【问题讨论】:

  • 你有什么问题?是在GridView中插入按钮吗?还是打开查看器窗口(或重定向到它)?

标签: c# asp.net linq gridview


【解决方案1】:

解决方案 1: 可以通过 GridView 中的ButtonField 来完成:

将行特定信息添加到 GridView 的 DataKeyNames(例如,如果需要使用 Silverlight 查看器查看数据源的“name1”和“age2”字段):

<asp:GridView ID="gvClients" DataKeyNames="name1,age2" ... >

在 GridView 中添加一个 ButtonField:

<asp:ButtonField ButtonType="Button" CommandName="View" Text="View" />

设置 RowCommand 事件处理程序(可以在标记或代码中完成):

gvClients.RowCommand += new GridViewCommandEventHandler(gvClients_RowCommand);

并处理命令:

void gvClients_RowCommand(object sender, GridViewCommandEventArgs e)
{
    int rowIndex = Convert.ToInt32(e.CommandArgument);
    string name1 = (string)gvClients.DataKeys[rowIndex].Values["name1"];
    int age2 = (int)gvClients.DataKeys[rowIndex].Values["age2"];

    // Open docName with the viewer
    ...
}

解决方案 2: 另一种避免回发的方法是使用 HyperLinkField:

<asp:HyperLinkField Text="View" DataNavigateUrlFormatString="Viewer.aspx?Name={0}&Age={1}" DataNavigateUrlFields="name1,age2" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多