2016-07-01 1 views
2

Ich habe den folgenden Code:Wie kann ich eine Dataset- oder Dataty-Zeile auf einen Wert setzen, der aus einem Gridview-Textfeld-Eintrag stammt?

protected void GridView4_RowCommand(object sender, GridViewCommandEventArgs e) 
 
    { 
 
     if (e.CommandName == "UpdateGCommand") 
 
     { 
 
      if (IsPostBack) 
 
      { 
 
       DataSet EditT = new DataSet(); 
 
       DataSet ValidT = new DataSet(); 
 
       DataRow row; 
 
       if (Session["Edit"] != null) 
 
       { 
 
        EditT = (DataSet)Session["Edit"]; 
 
       } 
 
       if (Session["Valid"] != null) 
 
       { 
 
        ValidT = (DataSet)Session["Valid"]; 
 
       } 
 

 
       DataTable dtEdit = EditT.Tables[0]; 
 
       DataTable dtValid = ValidT.Tables[0]; 
 

 

 

 
       GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer); 
 
       int RowIndex = gvr.RowIndex; 
 
       row = dtEdit.Rows[RowIndex]; 
 
       //------------------------------------------------------------------------------------ 
 
       //------------------------------------------------------------------------------------ 
 
       //------------------------------------------------------------------------------------ 
 
       // Must be able to update the EditT or dtEdit with value from Gridview4 textboxes here 
 
       //------------------------------------------------------------------------------------ 
 
       //------------------------------------------------------------------------------------ 
 
       //------------------------------------------------------------------------------------ 
 
       dtValid.Rows.Add(row.ItemArray); 
 
       dtEdit.Rows[RowIndex].Delete(); 
 
       GridView4.DataSource = EditT; 
 
       GridView5.DataSource = ValidT; 
 
       GridView4.DataBind(); 
 
       GridView5.DataBind(); 
 
      } 
 
      
 
     } 
 
    }

Und die folgende asp:

<asp:GridView ID="GridView4" runat="server" CellPadding="4" ForeColor="#333333" 
 
      GridLines="None" OnRowCommand="GridView4_RowCommand" 
 
      OnSelectedIndexChanged="GridView4_SelectedIndexChanged" AutoGenerateColumns="False"> 
 
      <AlternatingRowStyle BackColor="White" /> 
 
      <Columns> 
 
      <asp:TemplateField ShowHeader="False"> 
 
       <ItemTemplate> 
 
        <asp:LinkButton OnClick="UpdateRow_Click" 
 
         ID="LinkButton1" 
 
         runat="server" 
 
         CausesValidation="false" 
 
         CommandName="UpdateGCommand" 
 
         Text="Update"> 
 
        </asp:LinkButton>      
 
       </ItemTemplate>  
 
      </asp:TemplateField> 
 
       <asp:TemplateField HeaderText="Name"> 
 
       <ItemTemplate> 
 
        <asp:TextBox 
 
         ID="textBox1" 
 
         runat="server" 
 
         Text='<%#Eval("Name")%>'> 
 
        </asp:TextBox> 
 
        <asp:RequiredFieldValidator ID="rfvName" runat="server" ErrorMessage="Name is a required field" 
 
          ControlToValidate="textBox1" Text="*" ForeColor="Red"> 
 
        </asp:RequiredFieldValidator> 
 
       </ItemTemplate> 
 
      </asp:TemplateField> 
 
      <asp:TemplateField HeaderText="Email"> 
 
       <ItemTemplate> 
 
        <asp:TextBox 
 
         ID="textBox2" 
 
         runat="server" 
 
         Text='<%#Eval("Email")%>'> 
 
        </asp:TextBox> 
 
        <asp:RequiredFieldValidator ID="rfvEmail" runat="server" ErrorMessage="Email is a required field" 
 
          ControlToValidate="textBox2" Text="*" ForeColor="Red"> 
 
        </asp:RequiredFieldValidator> 
 
       </ItemTemplate> 
 
      </asp:TemplateField> 
 
      <asp:TemplateField HeaderText="Mobile"> 
 
       <ItemTemplate> 
 
        <asp:TextBox 
 
         ID="textBox3" 
 
         runat="server" 
 
         Text='<%#Eval("Mobile")%>'> 
 
        </asp:TextBox> 
 
        <asp:RequiredFieldValidator ID="rfvMobile" runat="server" ErrorMessage="Mobile is a required field" 
 
          ControlToValidate="textBox3" Text="*" ForeColor="Red"> 
 
        </asp:RequiredFieldValidator> 
 
       </ItemTemplate> 
 
      </asp:TemplateField> 
 

 

 
     </Columns> 
 
      <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
 
      <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" /> 
 
      <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" /> 
 
      <RowStyle BackColor="#FFFBD6" ForeColor="#333333" /> 
 
      <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" /> 
 
      <SortedAscendingCellStyle BackColor="#FDF5AC" /> 
 
      <SortedAscendingHeaderStyle BackColor="#4D0000" /> 
 
      <SortedDescendingCellStyle BackColor="#FCF6C0" /> 
 
      <SortedDescendingHeaderStyle BackColor="#820000" /> 
 
     </asp:GridView>

Hier ist, was passiert: Startpunkt 012.351.Starting point

Bearbeiten der E-Mail in Row 2 E-Mail Spezifikationen

Editing the Email in Row 2 to fit Email specifications

Nach dem Drücken auf den Link Update-Button in Zeile 2

After hitting the Update link button in Row 2

passen Wie Sie bin ich nicht sehen kann Ich kann den richtigen Wert aus dem Bearbeitungsfeld senden, da ich nicht weiß, welchen Code ich dafür verwenden soll. Bitte helfen Sie

+0

Zeigen Sie gridview .asp Code :) – Furtiro

+0

leider vergessen, es zu addieren lol – ytba92

+0

Ich bin nicht sicher, ob ich sollte erwähnen, dass die Daten von einem hochgeladen wurde Excel-Datei und wenn der Code dafür benötigt wird, um eine Antwort zu bekommen – ytba92

Antwort

0

Verwenden Sie diesen Code. Vielleicht ist es das, was du brauchst.

string txtName = ((TextBox) GridView4.Rows[RowIndex].FindControl("textBox1")).Text; 
 
string txtEmail = ((TextBox) GridView4.Rows[RowIndex].FindControl("textBox2")).Text; 
 
string txtMobile = ((TextBox) GridView4.Rows[RowIndex].FindControl("textBox3")).Text; 
 

 
if (txtName != null) { 
 
    EditT.Tables[0].Rows[RowIndex]["Name"] = txtName; 
 
} 
 

 

 
if (txtEmail != null) { 
 
    EditT.Tables[0].Rows[RowIndex]["Email"] = txtEmail; 
 
} 
 

 
if (txtMobile != null) { 
 
    EditT.Tables[0].Rows[RowIndex]["Mobile"] = txtMobile; 
 
}

für andere Textfelder das gleiche tun, wenn es sinnvoll ist. Danke

0

Ihr Code kann arbeiten, Sie müssen nur Ihre onrow_command Methode aktualisieren.

In dieser Methode können Sie die bearbeitete Zeile und alle ihre Textfeldwerte abrufen und sie dann wie gewünscht verwenden. (Eine neue Zeile in der validierten Datentabelle zum Beispiel hinzufügen)

protected void GridView4_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "UpdateGCommand") 
     { 
      if (IsPostBack) 
      { 




       GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer); 
       int RowIndex = gvr.RowIndex; 
       GridViewRow row = GridView4.Rows[RowIndex]; 

       //Actual edited values for this row 

       //Name 
       string name = ((TextBox)row.FindControl("textBox1")).Text.ToString(); 

       //Mail 
       string mail = ((TextBox)row.FindControl("textBox2")).Text.ToString(); 

       //Mobile 
       string mobile = ((TextBox)row.FindControl("textBox3")).Text.ToString(); 

       // Here you have all the edited row informations, you can do whatever you want with it 
      } 

     } 
    }