Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GridView和DetailsView代码用于更新DetailsView_C#_Asp.net_Gridview_Code Behind_Detailsview - Fatal编程技术网

C# GridView和DetailsView代码用于更新DetailsView

C# GridView和DetailsView代码用于更新DetailsView,c#,asp.net,gridview,code-behind,detailsview,C#,Asp.net,Gridview,Code Behind,Detailsview,我花了整个下午的时间试图使用代码隐藏来完成这项工作,但没有成功,所以我要求提供一些C#代码 基本上,我有一个主/细节关系中的GV和DV。GV显示ID和名称。如果我在GV行上单击Select,我希望在DV中看到它的ID、名称和地址。我知道如何在aspx文件中以声明方式工作。但在C#代码隐藏中,我不知道如何继续执行此函数: protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (

我花了整个下午的时间试图使用代码隐藏来完成这项工作,但没有成功,所以我要求提供一些C#代码

基本上,我有一个主/细节关系中的GV和DV。GV显示ID和名称。如果我在GV行上单击Select,我希望在DV中看到它的ID、名称和地址。我知道如何在aspx文件中以声明方式工作。但在C#代码隐藏中,我不知道如何继续执行此函数:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName.Equals("Select"))
    {

    //  PLEASE GIVE ME THE CODE HERE TO BIND THE DETAILSVIEW. THANKS!
    // I am using a sqldatasource if it makes any difference

    }
 }

这里有一个通用的解决方案向您展示了如何实现这一点,请注意,这个解决方案并不是非常安全的,但我想您会得到它的jist。如果有任何不清楚的地方,请发表评论

代码隐藏:

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
        GridViewRow selected = gv.Rows[Convert.ToInt32(e.CommandArgument)];
        List<ThatClass> cList = new List<ThatClass>();
        cList.Add(new ThatClass(selected.Cells[0].Text, selected.Cells[1].Text));
        dv.DataSource = cList;
        dv.DataBind();
    }
}
受保护的void gv_row命令(对象发送方,GridViewCommandEventArgs e)
{
如果(如CommandName==“选择”)
{
GridViewRow selected=gv.Rows[Convert.ToInt32(e.CommandArgument)];
List cList=新列表();
cList.Add(新类(选定的.Cells[0].Text,选定的.Cells[1].Text));
dv.DataSource=cList;
dv.DataBind();
}
}
标记:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" OnRowCommand="gv_RowCommand">
    <Columns>
        <asp:BoundField DataField="A" HeaderText="A"/>
        <asp:BoundField DataField="B" HeaderText="B" />
        <asp:CommandField ShowSelectButton="true" />
    </Columns>
</asp:GridView>

<asp:DetailsView runat="server" ID="dv">
</asp:DetailsView>

仅供参考:我使用以下列表绑定GV:

protected void Page_Load(object sender, EventArgs e)
{
    List<ThatClass> cList = new List<ThatClass>();
    cList.Add(new ThatClass("123", "abc"));
    cList.Add(new ThatClass("456", "def"));
    gv.DataSource = cList;
    gv.DataBind();
}
受保护的无效页面加载(对象发送方,事件参数e)
{
List cList=新列表();
客户添加(新类别(“123”、“abc”);
添加(新类别(“456”、“def”);
gv.DataSource=cList;
gv.DataBind();
}

非常感谢@Dennis。这正是我开始修改代码所需要的!