На моей странице asp: GridView определено следующим образом:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ViewStateMode="Enabled" >
<Columns>
<asp:BoundField DataField="ArtikelID" HeaderText="ID" ReadOnly="True" Visible="False"/>
<asp:BoundField DataField="Kategorie" HeaderText="Kategorie" ReadOnly="True" />
<asp:TemplateField HeaderText="Bezeichnung">
<ItemTemplate>
<asp:TextBox ID="txt_col_bezeichnung" runat="server" Text='<%# Bind("Bezeichnung") %>' ReadOnly="true"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Anzahl">
<ItemTemplate>
<asp:TextBox ID="txt_col_Anzahl" runat="server" Text='<%# Bind("Anzahl") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="E-Preis">
<ItemTemplate>
<asp:TextBox ID="txt_col_einzelpreis" runat="server" Text='<%# Bind("Einzelpreis", "C") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Kostenart">
<ItemTemplate>
<asp:TextBox ID="txt_col_kostenart" runat="server" Text='<%# Bind("Kostenart") %>' Enabled="false"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Kostenstelle">
<ItemTemplate>
<asp:TextBox ID="txt_col_kostenstelle" runat="server" Text='<%# Bind("Kostenstelle") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Во время события Page_Load (если это не обратная передача) я установил для dataSource список объектов, который создается динамически в зависимости от различных факторов.
Данные отображаются нормально, как показано здесь:
Пользователь может вводить данные в любое текстовое поле, которое включено / не доступно только для чтения. После этого нажимается кнопка для отправки изменений. Как я могу получить измененные данные после обратной передачи? Следующее явно не работает:
protected void Page_Load(object sender, EventArgs e)
{
if(this.IsPostBack)
{
var items = this.GridView1.DataSource as List<Bestellartikel>;
}
else
{
this.GridView1.DataSource = GetListOfBestellartikel();
this.GridView1.DataBind();
}
}