2011-01-16 19 views
0

Ich habe eine Gridview mit diesen Spalten: ID, Name, Preis, Menge, insgesamt. Auch ich habe eine Schaltfläche und ein Kontrollkästchen in jeder Zeile der Gridview. Wenn ich einige Zeilen überprüfe, möchte ich, dass diese Zeilen mit der Schaltfläche in eine andere Gridview übertragen werden. Wie kann ich das tun?Übertragung von Daten in einem anderen Gridview

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     DataKeyNames="id" DataSourceID="SqlDataSource3"> 


     <Columns> 
         <asp:TemplateField> 
       <ItemTemplate> 
        <asp:CheckBox ID="chkSelect" runat="server" /> 
        <asp:HiddenField ID="hdValue" runat="server" Value='<%#Eval("ID") %>' /> 
       </ItemTemplate> 
      </asp:TemplateField> 

      <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" 
       ReadOnly="True" SortExpression="id" /> 
      <asp:BoundField DataField="name" HeaderText="name" ReadOnly="True" 
       SortExpression="name" /> 
      <asp:BoundField DataField="price" DataFormatString="{0:c}" HeaderText="price" 
       ReadOnly="True" SortExpression="price" /> 
      <asp:BoundField DataField="quantity" HeaderText="quantity" 
       SortExpression="quantity" /> 
      <asp:BoundField DataField="total" DataFormatString="{0:c}" HeaderText="total" 
       ReadOnly="True" SortExpression="total" /> 


     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     SelectCommand="SELECT * FROM [Land]"></asp:SqlDataSource> 
</div> 
<div> 

    <asp:Button ID="Button1" runat="server" Text="Button" /> 

</div> 

Antwort

0

Während mit Datennetzen arbeiten, ich schaffe in der Regel eine Klasse, die eine Vorlage für meine Daten halten, und dann schaffe ich Objekte dieser Klasse und in eine Liste setzen, dann kann ich einfach diese Liste binden jedem Gitter .

Zum Beispiel:

public class LandTemplate 
{ 
    public property Id{get; set;} 
    public property Name{get; set;} 
    public property Price{get; set;} 
    public property Quantity{get; set;} 
    public property Total{get; set;} 
} 

Dann in Ihrer Methode, die in Ihrem Fall wird der Klick auf das Kontrollkästchen Ereignis sein, das Sie tun können:

List<LandTemplate> landList = new List<LandTemplate>(); 
public void CheckBox_Click(object sender, EventArgs e) 
{ 
    // get data from the current grid row... 

    LandTemplate land = new LandTemplate(); 
    land.Id= currentRow.Id; 
    land.Name = currentRow.Name; 
    .... 

    landList.Add(land); 

} 

public void Button_Click(object sender, EventArgs e) 
{ 
    this.gridView1.DataSource = landList; 
     this.gridView1.DataBind(); 
} 

Aber Sie müssen die LandList sparen in einem Viewstate oder einer Session, um nach jeder Seitenaktualisierung keine Daten zu verlieren.

Ich habe nicht auf Syntax überprüft, aber ich hoffe, Sie haben die Idee.

+0

hinzufügen, dann muss ich etwas in button_click schreiben, um diese Daten zu übertragen? – dali1985

+0

Ich habe meine Antwort bearbeitet, einen Blick darauf werfen und mir sagen, wenn etwas nicht klar ist. –

+0

Vielen Dank für Ihre Lösung.Ich bin mir nicht sicher, ob ich weiß, wie man die Liste in einem Viewstate speichert ... :-( – dali1985

Verwandte Themen