2011-03-10 53 views
3

我在ASP.net 3.5页面中有两个GridView。我将HyperLink字段作为First GridView中的一个字段。ASP.net中的父子Gridview

在这个超链接我需要调用通过传递某些值的方法showAllRecords(从超链接值)

如何做到这一点显示第二网格的点击?

感谢

回答

4

你可以尝试一个TemplateField像这样GridView1(主要GridView控件)

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton runat="server" ID="LinkButton1" CommandName="cmdName" CommandArgument='<%# Eval("IdColumn") %>' > LinkButton</asp:LinkButton> 
    </ItemTemplate> 
</asp:TemplateField> 

和GridView1的RowCommand,你可以得到CommandArgument和设置GridView2(子GridView控件)的数据源。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if(e.CommandName = "cmdName") 
    { 
     var arg = e.CommandArgument; 

     // use arg to filter GridView2's DataSource 
     GridView2.DataSource = FilteredDataSource; 
     GridView2.DataBind(); 
     // show GridView2 if it's hidden. 
    } 
} 
0

首先,你需要在第一网格处理SelectedIndexChanged事件,然后得到超链接的价值。超链接是DataKey吗?如果是,则通过GridOne.SelectedDataKey.Values["key"]得到它,否则通过valuefromGridOne = GridOne.SelectedRow.Cells[num].Text得到实际的小区,其中number是小区编号。一旦你有了它,你可以通过处理objectDataSource的选择事件(假设你用它来绑定数据)并传递这个值来将值传递给你的第二个网格,像这样e.InputParameters["dataKey"] = valuefromGridOne;