2013-05-18 9 views
4

Как получить AppId из gridView в codebehind, если я нажал кнопку редактирования изображения во второй строке.Как получить значение столбца gridview в codebehind

Application List

Aspx Код:

<asp:BoundField HeaderText="AppId" DataField="AppID" /> 


<asp:TemplateField HeaderText="Actions" ControlStyle-Width="20px" ItemStyle-Width="130px"> 
        <ItemTemplate> 
         <asp:ImageButton ID="imgMailCamp" runat="server" ImageUrl="~/Images/AppSetup/Mail.png" 
          Height="18px" ToolTip="Send Mail Campaign" CssClass="grdImageAlign" CommandName="SendMail" OnClick="btnMailCamp_Click" /> 
         <asp:ImageButton ID="imgViewApp" runat="server" ImageUrl="~/Images/AppSetup/application-view-list-icon.png" 
          Height="18px" ToolTip="View Appplication" CssClass="grdImageAlign" CommandName="View" OnClick="btnView_Click" /> 
         <asp:ImageButton ID="imgEditApp" runat="server" ImageUrl="~/Images/AppSetup/Action-edit-icon.png" 
          Height="18px" ToolTip="Edit Application" CssClass="grdImageAlign" CommandName="Edit" OnClick="btnEdit_Click"/> 
         <asp:ImageButton ID="imgDeleteApp" runat="server" ImageUrl="~/Images/AppSetup/Trash-can-icon.png" 
          Height="18px" ToolTip="Delete Application" CssClass="grdImageAlign" CommandName="Delete" OnClick="btnDelete_Click" /> 
        </ItemTemplate> 
       </asp:TemplateField> 

C# Код:

protected void btnEdit_Click(object sender, EventArgs e) 
{ 
    // I need to get the current row appId, I use this appId in next page for sql query 
    Response.Redirect("/Secured/EditApplication.aspx?AppID="+AppID); 
} 
+0

вы можете использовать ключ данных или скрытый подход к полю, просто посмотрите здесь http://weblogs.asp.net/aghausman/archive/2009/01/08/get-primary-key-on-row-command -gridview.aspx – user2031802

ответ

2

Попробуйте Как это .... Не Define Нажмите событие Баттона .. ..Define Button Как это ...

 <asp:ImageButton ID="imgEditApp" runat="server" 
ImageUrl="~/Images/AppSetup/Action-edit-icon.png" 
    Height="18px" ToolTip="Edit Application" CssClass="grdImageAlign" 
CommandName="Edit"/> 

И Определить Ваше событие GridView RowEditing, как это ....

protected void gv_RowEditing(object sender, GridViewEditEventArgs e) 
     { 
      Response.Redirect("/Secured/EditApplication.aspx?AppID="+YourGridViewId.Rows[e.NewEditIndex].Cells[1].Text); 
     } 

Edit: Я думаю, что у вас есть проблема в definig RowEditingEvent ..... хорошо вы можете это сделать .. .nothing изменить только написать этот код в вас Нажмите событие ...

protected void btnEdit_Click(object sender, EventArgs e) 
{ 
     ImageButton ib = sender as ImageButton; 
     GridViewRow row = ib.NamingContainer as GridViewRow; 
    Response.Redirect("/Secured/EditApplication.aspx?AppID="+YourGridViewId.Rows[row.RowIndex].Cells[1].Text); 
} 

Редактировать 2

<asp:ImageButton ID="imgEditApp" runat="server" 
ImageUrl="~/Images/AppSetup/Action-edit-icon.png" 
    Height="18px" ToolTip="Edit Application" CssClass="grdImageAlign" 
CommandName="Edit" CommandArgument='<%#Eval("AppID") %>'/> 

    protected void btnEdit_Click(object sender, EventArgs e) 
    { 
string appid= (sender as ImageButton).CommandArgument; 
     Response.Redirect("/Secured/EditApplication.aspx?AppID="+appid 
    } 
+0

Iam, получающий эту ошибку. Если я использую вышеуказанный код, Error'System.EventArgs 'не содержит определения для' NewEditIndex ', и никакой метод расширения' NewEditIndex ', принимающий первый аргумент типа' System.EventArgs ', мог бы (если вы не указали директиву или ссылку на сборку?) – Vignesh

+0

@ Vignesh попробуйте сейчас обновить свой ответ –

+0

Если я изменил EventArgs на GridViewEditEventArgs Iam, получив ошибку, например, «CS0123: перегрузка для« btnEdit_Click »не соответствует команде делегата« Система ». Web.UI.ImageClickEventHandler '" – Vignesh

2

Из этого можно получить значение ячейки сетки.

GridView.Rows[RowIndex].Cells[CellIndex].Text 

Здесь «RowIndex» это номер строки, из которого вы хотите получить данные и «CellIndex» является количество клеток, из которого вы хотите получить данные.

Я думаю, что событие «OnRowCommand» gridview лучше всего подходит для вашей проблемы. использование выдувного ссылку для получения более подробной информации

http://www.codeproject.com/Tips/564619/Example-of-gridview-rowcommand-on-Button-Click

+0

Это лучший и быстрый способ ! +1 – ron

1

он должен быть с commandargument
ASPX

<asp:ImageButton ID="imgEditApp" CommandArgument='<%# Eval("AppID") %>' runat="server" ... OnClick="btnEdit_Click"/> 

код

protected void gv_RowEditing(object sender, GridViewEditEventArgs e) 
     { 
      int categoryId = Convert.ToInt32(e.CommandArgument); 
      Response.Redirect("/Secured/EditApplication.aspx?AppID="+categoryId); 
     } 


или вы можете использовать PostBackUrl свойство ImageButton и это было бы так:

<asp:ImageButton ID="imgEditApp" PostBackUrl='<%# string.Format("/Secured/EditApplication.aspx?AppID={0}", Eval("AppID")) %>' runat="server" /> 
0

Проверьте этот фрагмент кода.

Это код в файле aspx с двумя столбцами DataBound «AppId» и TemplateColumn «Действие», содержащий кнопку изображения. Соблюдайте свойства CommandName и CommandArgument кнопки Image. Также определите OnRowCommand прослушиватель событий для gridview.

<asp:GridView ID="grdDisplayData" runat="server" AutoGenerateColumns="false" 
      EnableViewState="false" onrowcommand="grdDisplayData_RowCommand"> 
      <Columns> 
       <asp:BoundField HeaderText="AppId" DataField="AppId" /> 
       <asp:TemplateField HeaderText="Action" > 
        <ItemTemplate> 
         <asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="MyEdit" 
         CommandArgument="<%# ((GridViewRow) Container).RowIndex%>"/> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="ImageAction"> 
        <ItemTemplate> 
         <asp:ImageButton ID="ImageButton1" runat="server" Width="15px" Height="15px" 
          CommandName="ImgEdit" CommandArgument="<%# ((GridViewRow) Container).RowIndex%>"/> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

И вот код за кодом. В e.CommandArument возвращается индекс строки, в которую была нажата кнопка изображения.

protected void grdDisplayData_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e) 
     { 
      if (e.CommandName == "ImgEdit") 
      { 
       int RowIndex = Convert.ToInt32(e.CommandArgument); 
       Response.Redirect("/Secured/EditApplication.aspx?AppID=" + grdDisplayData.Rows[RowIndex].Cells[1].Text.Trim()); 
      } 
     } 

Дайте мне знать, если это исправьте вашу проблему.

Cheers !!! Piyush Deshpande

+0

ошибка в [rowindex] – Vignesh

+0

Какая ошибка вы получаете? Если у вас будет больше строк в сетке, чем в том, что поддерживается Int16, измените «Convert.ToInt16» на «Convert.ToInt32» или «Convert.ToInt64» и проверьте, не исчезла ли ошибка, если не отправлена ​​ошибка. Ура! –