2016-11-29 2 views
1

Ich habe meine Nachforschungen hier gemacht und kann nun erfolgreich einen Wert einer ausgeblendeten Randspalte in meiner Gitteransicht ermitteln. Das Problem ist, dass ich die versteckte Spalte der ausgewählten Zeile nicht anvisieren kann.selectedrow on hidden boundfield

kann ich GridView1.SelectedRow.Cells[7].Text; so etwas auf einer versteckten Spalte verwenden.Ist es möglich?

hier ist mein Code: wollte

<asp:GridView ID="GridView1" 
         CssClass="table table-hover table-striped" 
         runat="server" 
         AutoGenerateColumns="False" DataKeyNames="id" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 
         <Columns> 
          <asp:BoundField DataField="productName" HeaderText="Product Name" 
           SortExpression="DateField" /> 
          <asp:BoundField DataField="stock_name" HeaderText="Stock Name" 
           SortExpression="DateField" /> 
          <asp:BoundField DataField="stock_id" HeaderText="Stock I.D." 
           SortExpression="DateField" /> 
          <asp:BoundField DataField="stock_in" HeaderText="Stock In" 
           SortExpression="DateField" /> 
          <asp:BoundField DataField="stock_out" HeaderText="Stock Out" 
           SortExpression="DateField" /> 
          <asp:BoundField DataField="stock_on_hand" HeaderText="On hand" 
           SortExpression="DateField" /> 
          <asp:BoundField DataField="max_date" HeaderText="Date & Time" 
           DataFormatString="{0:MM-dd-yyyy hh:mm tt}" 
           SortExpression="DateField" /> 
          <asp:BoundField DataField="id" Visible="false" HeaderText="id" 
           SortExpression="DateField" /> 
          <asp:TemplateField> 
           <ItemTemplate> 
            <asp:HiddenField ID="HiddenField1" runat="server" 
             Value='<%# Eval("id") %>' /> 
           </ItemTemplate> 
          </asp:TemplateField> 
          <asp:ButtonField Text="Select" ControlStyle-CssClass="btn btn-info btn-sm" CommandName="Select" ItemStyle-Width="150" HeaderText="Review"> 
           <ControlStyle CssClass="btn btn-info btn-sm"></ControlStyle> 

           <ItemStyle Width="150px"></ItemStyle> 
          </asp:ButtonField> 
         </Columns> 
        </asp:GridView> 

ich dieses gebundene Feld Ziel:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     //GridView1.Columns[7].Visible = true; 
     //stock_id_gridview_1(); 
     foreach (GridViewRow row in GridView1.Rows) 
     { 
      string id = GridView1.DataKeys[row.RowIndex]["id"].ToString(); 

      con.Open(); 
      cmd = new SqlCommand(@"SELECT transaction_id,transaction_number 
           FROM stocks_history 
           WHERE id = @id", con); 

      cmd.Parameters.AddWithValue("@id", id); 

      rdr = cmd.ExecuteReader(); 

      if (rdr.HasRows) 
      { 
       while (rdr.Read()) 
       { 
        transaction_id = rdr["transaction_id"].ToString(); 

        //lbl_test_id.Text = rdr["transaction_id"].ToString(); 
        transaction_number = rdr["transaction_number"].ToString(); 

        lbl_test_id.Text = transaction_id + " " + transaction_number; 
       } 
      } 

      con.Close(); 
     } 

hier mein gridview ist

<asp:BoundField DataField="id" Visible="false" HeaderText="id" 
           SortExpression="DateField" /> 
+0

Was Sie bedeuten, „kann nicht zielen auf die eine verborgene Spalte die Zeile, die ich ausgewählt habe. "? –

+0

Ich dachte über 'GridView1.SelectedRow.Cells [7] .Text;' so etwas in einer versteckten Spalte.Ist es möglich? –

+0

Ja, Sie können es nehmen, müssen aber DataKeyNames -Eigenschaft verwenden. Können Sie Ihren HTML-Code auch teilen? –

Antwort

0

Wenn Sie Attribut DataKeyNames, Sie kann Wert von unsichtbaren Spalte wie

nehmen Attribut

Verwenden

<asp:GridView runat="server" ID="GridView" DataKeyNames="id"> 
    </asp:GridView> 

Und Sie auf die Daten zugreifen können

var id = GridView.DataKeys[RowIndex].Values[KeyIndex] 

erhalten ausgewählte Zeile ausgeblendete Spalte Wert

var id = GridView.DataKeys[GridView.SelectedRow.RowIndex].Values[0]; 
+0

der versteckte Wert der Zeile, die ich ausgewählt habe? –

+0

Entschuldigung, aber Ihr Code funktioniert auf die gleiche Weise wie meine.Ich muss die Funktionalität in einer versteckten Spalte auswählen –

+0

Ja, Ihre Spalte "ID" mit Index 7 ist unsichtbar, so müssen Sie Attribut hinzufügen und es bekommen, wie ich zeige, das ist alles. RowIndex in Ihrem Fall wird row.RowIndex und KeyIndex wird 0, weil Sie ein Attribut DataKeyNames verwenden. –