Без использования SelectedIndexChanged, как получить значение каждой строки из gridview? - PullRequest
0 голосов
/ 11 января 2012

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

это мой код aspx

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID"
        DataSourceID="SqlDataSource1" ShowHeader="False" AllowPaging="True" BorderColor="White"
        CellPadding="6" GridLines="None" Height="100px" Width="800px">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    Card Name:
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
                    <br />
                    Cost :
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("Price") %>'></asp:Label>
                    <br />
                    <asp:Label ID="Label3" runat="server" Text='<%# Bind("ProductImgID") %>'></asp:Label>
                    <asp:Image ID="Image3" runat="server" ImageUrl='<%# Eval("ProductImgUrl", "images/{0}") %>' />
                    <br />
                    <asp:Button ID="btnAddProduct" runat="server" Text="Add" />
                    <br />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

Ответы [ 4 ]

2 голосов
/ 11 января 2012

Один из вариантов: привязать CommandArgument кнопки к ProductID

<asp:Button ID="btnAddProduct" runat="server" Text="Add" CommandArgument='<%#Bind("ProductID")%>' />

, а затем в событии RowCommand получить ProductID и извлечь строку из базы данных

string prodID=(string)e.CommandArgument()

, затем с помощью идентификатора получить строку из базы данных.

0 голосов
/ 14 мая 2014
        <asp:GridView ID="grdResults" CssClass="CommonTable dataTable" AutoGenerateColumns="false"    runat="server">
                                                    <Columns>
                                    <asp:TemplateField HeaderText="Sl#">
                                        <ItemTemplate>
                                            <asp:Label ID="lblSlno" Text='<%# Container.DataItemIndex+1 %>' runat="server"></asp:Label>
                                        </ItemTemplate>
                                    </asp:TemplateField>

                                    <asp:TemplateField HeaderText="" ControlStyle-Height="15px" ControlStyle-Width="15px">
                                        <HeaderStyle HorizontalAlign="Left" />
                                        <ItemStyle HorizontalAlign="Left" CssClass="PInfoTd" />
                                        <ItemTemplate>
                                            <asp:ImageButton ID="lknassesno" ToolTip="Edit Assessment" Width="50" CssClass="NewButton" ***CommandName="LINK"***
                                                runat="server" ImageUrl="~/img/Edit.png" />
                                            <asp:HiddenField ID="hidassesmentno" Value='<%#  EVAL("PAN_CODE")%>' runat="server" />
                                            <asp:HiddenField ID="hidPendStatus" Value='<%#  EVAL("Pstatus")%>' runat="server" />
                                            <asp:HiddenField ID="hidIPNO"Value='<%#EVAL("IP_NO")%>' runat="server" />

                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>



**code behind**
    Protected Sub grdResults_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdResults.RowCommand
            If **e.CommandName = "LINK"** Then
                Dim ctrl As Control = e.CommandSource
                Dim grrow As GridViewRow = ctrl.Parent.NamingContainer
                'Dim i As Integer = Convert.ToInt16(e.CommandArgument)
                'Dim lknassesno As HiddenField = DirectCast(e.CommandSource, ImageButton)
                Dim hidAssesmentNo As HiddenField = DirectCast(grdResults.Rows(grrow.RowIndex).FindControl("hidassesmentno"), HiddenField)
                Dim lblstatus As HiddenField = DirectCast(grdResults.Rows(grrow.RowIndex).FindControl("hidPendStatus"), HiddenField)
                Dim hidIpNo As HiddenField = DirectCast(grdResults.Rows(grrow.RowIndex).FindControl("hidIPNO"), HiddenField)
                Dim Assno As String = hidAssesmentNo.Value
                Dim Ipno As String = hidIpNo.Value
                Dim st As String = ""
                If lblstatus.Value = "Pending" Then
                    st = "E"`enter code here`
                ElseIf lblstatus.Value = "Completed" Then
                    st = "V"
                End If
                Response.Redirect("Assessment.aspx?PAssNo=" & Assno & "&Mode=" & st & "&IPNO=" & Ipno & "")
            End If
        End Sub
0 голосов
/ 11 января 2012

Добавить CommandArgument='<%# Container.DataItemIndex %>' к вашей кнопке Добавить

<asp:Button ID="btnAddProduct" runat="server" Text="Add" CommandArgument='<%# Container.DataItemIndex %>'/>

Чтобы получить Name, в строке команды gridview используйте этот код

Dim gvr As GridViewRow = grvGRNCONs.Rows(e.CommandArgument)
Dim name As String = DirectCast(gvr.FindControl("Label1"), Label).Text

и т. Д. *

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

Чтобы получить значение строки, вы должны получить ссылку на строку. После получения строки вы можете легко добраться до указанного столбца и получить значение

Давайте рассмотрим, что у вас есть «элемент управления кнопкой ссылки».в столбце поля шаблона.Для gridview вы должны установить Row Command Event, а также в шаблоне редактирования столбца, задать имя команды для кнопки ссылки и сказать «lnkTest»

В RowCommand Event вы должны включить следующий разделс кодом

if(e.CommandName.Equals("lnkTest")) // Checks that link button was clicked

  { 
    GridViewRow grdRow = (((LinkButton)e.CommandSource).Container)

// This Will give you the reference of the Row in which the link button was clicked

    int grdRowIndex = grdRow.RowIndex;

//This will give you the index of the row

    var uniqueDataKeyValue = GridView1.DataKeys[grdRowIndex].Value;

// Это даст вам значение DataKey для строки, в которой щелкала ссылка Control

Надеюсь, что приведенный выше код поможет

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