Доступ к данным в RowCommand - PullRequest
0 голосов
/ 11 января 2010

Я новичок в C # и в VB я мог бы сделать следующее:

Protected Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
        If e.CommandName = "CommandName" Then

            Dim label1 As Label = e.Item.FindControl("label1")

            Response.Write(label1.Text))


        End If

    End Sub

в C # и RowCommand, я не могу использовать findcontrol для доступа к значению элементов управления. Я хочу получить значения двух меток, чтобы я мог использовать их при вызове метода в строке команды

Обновление: В C #, когда я делаю

Label label1 = (Label)e.Item.FindControl("label1"); 

или

Label label1 = (Label)e.Row.FindControl("label1"); 

У меня нет доступных Строка или Предмета

Ответы [ 3 ]

0 голосов
/ 11 января 2010

Вот мой код:

<asp:GridView ID="gridview1" runat="server" Width="98%" AutoGenerateColumns="false"
        AllowPaging="True" PageSize="10" PagerStyle-HorizontalAlign="center"
        OnRowCommand="gridView_RowCommand"
        >
    <columns>
        <asp:TemplateField HeaderText="Active" HeaderStyle-HorizontalAlign="Left">
            <ItemTemplate>
                <asp:Label ID="lblArticleId" Text='<%# Eval("Id")%>' Visible="false" runat="server"></asp:Label>
                <asp:Button ID="btnActive" CommandName='<%# Eval("Activity")%>' Text='<%# Eval("Activity")%>' runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </columns>
</asp:GridView>

.cs:

protected void gridView_RowCommand(object source, System.Web.UI.WebControls.GridViewCommandEventArgs e)
            {
                if (e.CommandName == "Disable") 
                {
                    UpdateArticleVisibility(true, [lblArticleID.Text value], gOrgId);
                }

                if (e.CommandName == "Enable")
                {
                    UpdateArticleVisibility(false, [lblArticleID.Text value], gOrgId);
                }
            }
0 голосов
/ 11 января 2010

Я добавил CommandArgument в кнопку и смог получить то, что мне нужно:

.aspx в виде сетки

  <asp:Button ID="btnActive" CommandArgument='<%# Eval("Id")%>' CommandName='<%# Eval("Activity")%>' Text='<%# Eval("Activity")%>' runat="server" />

затем в RowCammand в .aspx.cs

  protected void gridview_RowCommand(object source, System.Web.UI.WebControls.GridViewCommandEventArgs e)
                {
                    if (e.CommandName == "Disable")
                    {
                          string[] args = e.CommandArgument.ToString().Split(',');
                          Guid gArticleId = new Guid(args[0]);

                          Response.Write(gArticleId);

                    }
0 голосов
/ 11 января 2010

Где существует Label1?Не могли бы вы опубликовать свой пример C #?Это также должен быть тип DataGridCommandEventArgs, так что, может быть, это другой аргумент?Я не вижу, как тот же тип аргумента события, как Item не может существовать.Трудно сказать, не видя полного примера C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...