C# 为gridview创建单个“视图”按钮方法

C# 为gridview创建单个“视图”按钮方法,c#,asp.net,linq,gridview,C#,Asp.net,Linq,Gridview,我只是尝试为gridview的特定行中的数据创建一个单键视图,并将其传递给Silverlight查看器。 这里有一个viewall按钮,我正试图从中找出答案 protected void btnViewAll_Click(object sender, EventArgs e) { string id = HttpContext.Current.Request.Headers["id"]; #if DEBUG if (id == null)

我只是尝试为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");
    }
解决方案1: 可以使用GridView中的按钮字段执行此操作:

<asp:ButtonField ButtonType="Button" CommandName="View" Text="View" />
将行特定信息添加到GridView的DataKeyName中,例如,如果需要使用Silverlight viewer查看数据源的字段name1和age2:

<asp:GridView ID="gvClients" DataKeyNames="name1,age2" ... >
并处理该命令:

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:另一种避免回发的方法是使用超链接字段:

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

你有什么问题?是否要在GridView中插入按钮?或者打开查看器窗口或重定向到它?
<asp:HyperLinkField Text="View" DataNavigateUrlFormatString="Viewer.aspx?Name={0}&Age={1}" DataNavigateUrlFields="name1,age2" />