Код GridView и DetailsView для обновления DetailsView

Я провел весь день, пытаясь сделать это, используя CODE BEHIND, но безуспешно, поэтому я прошу какой-то код C#.

По сути, у меня есть GV и DV в отношении master/detail. GV отображает идентификатор и имя. Если я нажму «Выбрать» в строке GV, я хочу увидеть ее идентификатор, имя и адрес в DV. Я знаю, как заставить это работать декларативно в файле aspx. Но в коде С# позади я не знаю, как действовать в этой функции:

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

    }
 }

person user776676    schedule 14.06.2011    source источник


Ответы (1)


Вот общее решение, показывающее, как этого добиться, обратите внимание, что это решение не очень безопасно для ошибок, но я полагаю, что вы получите его суть. Пожалуйста, прокомментируйте, если есть что-то непонятное.

Код программной части:

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();
    }
}

Разметка:

<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();
}
person Dennis Röttger    schedule 14.06.2011
comment
Большое спасибо @Dennis. Это именно то, что мне нужно, чтобы начать переделывать свой код! - person user776676; 14.06.2011