Получение значения ячейки из команды строки gridview

Эй, я использую кнопки в виде сетки, каждая из которых я хочу назначить определенному действию, включает извлечение определенных значений ячеек из столбцов сетки, которые я пытался использовать

 GridViewRow row = (GridViewRow (((Button)e.CommandSource).NamingContainer);

но это дает мне Невозможно привести объект типа 'System.Web.UI.WebControls.GridView' к типу 'System.Web.UI.WebControls.Button'.

Я тоже пробовал

int index = Convert.ToInt32(e.CommandArgument);
GridViewRow row = GridView1.Rows[index];

это дает мне следующую ошибку. Указанный аргумент вышел за пределы допустимых значений. Имя параметра: индекс

обратите внимание, что когда я попытался указать свойство commandParameters для ButtonField, компилятор сказал, что это недопустимый параметр для ButtomField, и у меня есть 8 столбцов в виде сетки, поэтому оно не выходит за пределы диапазона

или в качестве альтернативы я могу использовать более одной кнопки выбора команды, если так, как сказать, какая из них нажата?

пожалуйста, помогите мне в отчаянии

ASP-код:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="AcitivityId" DataSourceID="SqlDataSource1" Height="304px" Width="912px" OnRowCommand="GridView1_RowCommand">
            <Columns>
                <asp:BoundField DataField="AcitivityId" HeaderText="AcitivityId" InsertVisible="False" ReadOnly="True" SortExpression="AcitivityId" />
                <asp:BoundField DataField="ActiviityName" HeaderText="ActiviityName" SortExpression="ActiviityName" />
                <asp:BoundField DataField="ActivityLocation" HeaderText="ActivityLocation" SortExpression="ActivityLocation" />
                <asp:BoundField DataField="ActivityStartDate" HeaderText="ActivityStartDate" SortExpression="ActivityStartDate" />
                <asp:BoundField DataField="ActivityDueDate" HeaderText="ActivityDueDate" SortExpression="ActivityDueDate" />
                <asp:BoundField DataField="ActivityDescription" HeaderText="ActivityDescription" SortExpression="ActivityDescription" />
                <asp:ButtonField ButtonType="Button" CommandName="Avaliable" Text="Show avaliable buses" />
                <asp:ButtonField ButtonType="Button" CommandName="Assigned" Text="Show assigned buses "/>
            </Columns>
        </asp:GridView>

1 ответ

Я использую этот код в нескольких местах на моем сайте, чтобы получить строку из объекта, вызывающего GridViewRowCommand

protected void btnUpdate_Command(object sender, CommandEventArgs e)
{
    GridViewRow g = (GridViewRow)((Button)sender).NamingContainer;
    // other stuff
}

Надеюсь это поможет.

Другие вопросы по тегам