好吧我已经通过使用更新参数而不是在我的gridview而不是boundfields上放置模板字段来解决我的上一个问题。
它显示正常,只有更新按钮似乎不起作用。当我点击它时,它只返回上一个窗口而不更新数据库中的数据字段。
你可以看下面的代码并告诉我,如果我错过了这里的东西吗?感谢.... <asp:GridView DataKeyNames="BenutzerID" ID="grdBenutzer" runat="server" Visible="False" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:BoundField ReadOnly="true" DataField="BenutzerID" HeaderText="ID" />
<asp:TemplateField HeaderText="Titel">
<ItemTemplate>
<%# Eval("Titel")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtTitel" Text='<%# Bind("Titel")%>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Bezeichnung">
<ItemTemplate>
<%# Eval("Bezeichnung")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList AppendDataBoundItems="true" runat="server" ID="ddwnBezeichnung" Text='<%# Bind("Bezeichnung")%>'>
<asp:ListItem Text="Mitarbeiter" Value="Mitarbeiter"></asp:ListItem>
<asp:ListItem Text="Praktikant" Value="Praktikant"></asp:ListItem>
<asp:ListItem Text="Azubi" Value="Azubi"></asp:ListItem>
<asp:ListItem Text="Umschüler" Value="Umschüler"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Vorname">
<ItemTemplate>
<%# Eval("Vorname")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtVorname" Text='<%# Bind("Vorname")%>'/>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Nachname">
<ItemTemplate>
<%# Eval("Nachname")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtNachname" Text='<%# Bind("Nachname")%>'/>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField ReadOnly="true" HeaderText="Geburtsdatum" DataField="Geburtsdatum" />
<asp:BoundField ReadOnly="true" HeaderText="Geburtsort" DataField="Geburtsort" />
<asp:TemplateField HeaderText="Straße">
<ItemTemplate>
<%# Eval("Straße")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtStraße" Text='<%# Bind("Straße")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Nationalität">
<ItemTemplate>
<%# Eval("Nationalität")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtNationalität" Text='<%# Bind("Nationalität")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Hausnummer">
<ItemTemplate>
<%# Eval("Hausnummer")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtHausnummer" Text='<%# Bind("Hausnummer")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="PLZ">
<ItemTemplate>
<%# Eval("PLZ")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtPLZ" Text='<%# Bind("PLZ")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ort">
<ItemTemplate>
<%# Eval("Ort")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtOrt" Text='<%# Bind("Ort")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Land">
<ItemTemplate>
<%# Eval("Land")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList AppendDataBoundItems="true" runat="server" ID="ddwnLand" Text='<%# Bind("Land")%>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Mobil">
<ItemTemplate>
<%# Eval("Mobil")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtMobil" Text='<%# Bind("Mobil")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField ReadOnly="true" DataField="Status" HeaderText="Status" />
<asp:TemplateField HeaderText="Benutzerart">
<ItemTemplate>
<%# Eval("Benutzerart")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList AppendDataBoundItems="true" runat="server" ID="ddwnBenutzerart" Text='<%# Bind("Benutzerart")%>'>
<asp:ListItem Text="Mitarbeiter" Value="Mitarbeiter"></asp:ListItem>
<asp:ListItem Text="Geschäftsführung" Value="Geschäftsführung"></asp:ListItem>
<asp:ListItem Text="Führungskraft" Value="Führungskraft"></asp:ListItem>
<asp:ListItem Text="Administrator" Value="Administrator"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Homepage">
<ItemTemplate>
<%# Eval("Homepage")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtHomepage" Text='<%# Bind("Homepage")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email">
<ItemTemplate>
<%# Eval("Email")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtEmail" Text='<%# Bind("Email")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Festnetz">
<ItemTemplate>
<%# Eval("Festnetz")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtFestnetz" Text='<%# Bind("Festnetz")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Fax">
<ItemTemplate>
<%# Eval("Fax")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtFax" Text='<%# Bind("Fax")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Urlaubstage">
<ItemTemplate>
<%# Eval("UrlaubstageInsgesamt")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" ID="txtUrlaubstageInsgesamt" Text='<%# Bind("UrlaubstageInsgesamt")%>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="Ändern" ButtonType="Button" ShowEditButton="true" ShowCancelButton="true" />
<asp:CommandField HeaderText="Neu" ButtonType="Button" ShowInsertButton="true" />
<asp:CommandField HeaderText="Archivieren" ButtonType="Button" ShowDeleteButton="true"/>
</Columns>
</asp:GridView>
答案 0 :(得分:4)
您EditItemTemplate
的所有地方都有以下代码:
Text='<%# Eval("fieldName")%>'
您需要将其更改为:
Text='<%# Bind("fieldName")%>'
Eval
用于单向(只读)数据绑定。您需要双向数据绑定,以便更新数据库值。
您还需要在GridView
中设置DataKeyNames
property:
<asp:GridView ID="grdBenutzer" runat="server" Visible="False" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand" DataKeyNames="BenutzerID" >
根据文档(上面链接),这是自动更新功能工作所必需的:
使用DataKeyNames属性指定其中的一个或多个字段 表示数据源的主键。你必须设置 DataKeyNames属性为了自动更新和删除 可以使用GridView控件的功能。