Как я могу вызвать функцию кода, когда пользователь щелкает строку сетки? - PullRequest
2 голосов
/ 07 мая 2011

У меня есть сетка на странице aspx с кодом C # позади.

Есть ли способ, как я могу запустить код за функцией, когда пользователь нажимает в любом месте строки? Сейчас я использую кнопку выбора. Но тогда пользователь должен нажать на эту кнопку. И я хочу, чтобы пользователь мог щелкнуть в любом месте строки, чтобы показать ее детали в другом виде сетки, расположенном рядом с основным видом сетки.

Некоторые идеи о том, как это сделать?

Спасибо!

1 Ответ

2 голосов
/ 07 мая 2011

попробуйте

<asp:GridView runat="server" ID="GridView1" DataKeyNames="ID" AutoGenerateColumns="False"
        Font-Names="Tahoma" Font-Size="Small" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
        OnRowDataBound="GridView1_RowDataBound">
        <Columns>
            <asp:TemplateField HeaderText="Row">
                <ItemTemplate>
                    <%# Container.DataItemIndex+1 %>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="FirstName" HeaderText="First Name" />
            <asp:BoundField DataField="LastName" HeaderText="Last Name" />
            <asp:CommandField ShowSelectButton="true" ButtonType="Link" Visible="false" SelectText="Enroll" />
        </Columns>
    </asp:GridView>

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridView1.DataSource = Enumerable.Range(1, 10).Select(a => new
            {
                ID = a,
                FirstName = String.Format("First {0}", a),
                LastName = String.Format("Last{0}", a)
            });
            GridView1.DataBind();
        }
    }
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {

        //Bind other grid

        Response.Write(GridView1.SelectedIndex+1);

    }
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //add css to GridViewrow based on rowState
            e.Row.CssClass = e.Row.RowState.ToString();
            //Add onclick attribute to select row.
            e.Row.Attributes.Add("onclick", String.Format("javascript:__doPostBack('GridView1','Select${0}')", e.Row.RowIndex));
        }
    }
...