【发布时间】:2010-11-19 16:19:02
【问题描述】:
我目前正在尝试学习如何使用基本的网格视图控件来显示我的数据。
首先,我尝试通过 aspx 页面做所有事情,以尝试让自己的事情变得更简单。
到目前为止一切都很好,但我在使用更新查询时遇到了问题。
我想要的结果只是一个简单的 2 列表格,其中将显示一个用户名,然后是一个编辑按钮。
问题是,如果我不在列中包含用户 ID,则查询不会更新任何内容。
这是我的 SqlDataSource 代码:
<asp:SqlDataSource
ID="sqlDataSource"
runat="server"
ConnectionString="<%$ ConnectionStrings:conn %>"
SelectCommand="SELECT UserID, Name FROM tblUsers;"
UpdateCommand="UPDATE tblUsers SET Name = @Name WHERE UserID = @UserID">
<UpdateParameters>
<asp:Parameter Name="Name" />
<asp:Parameter Name="UserID" />
</UpdateParameters>
</asp:SqlDataSource>
这是我的 GridView:
<asp:GridView
ID="Clients"
DataSourceID="sqlDataSource"
runat="server"
AllowPaging="true"
AllowSorting="true"
PageSize="25"
AutoGenerateColumns="False"
DataKeyNames="UserID">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Users Name" SortExpression="Name" />
<asp:CommandField EditText="Edit" ShowEditButton="true" />
</Columns>
</asp:GridView>
当我转到页面并单击编辑时,名称字段会变为文本框,我可以按预期选择更新或取消。
但是对于上面的代码,当我点击更新时,它只是再次显示普通表,数据没有变化,因为 SQL 没有获取任何用户 ID。
但是,如果我将<asp:BoundField DataField="UserID" HeaderText="Users ID" SortExpression="UserID" /> 添加到<Columns>,它就可以工作。
有什么方法可以让我在不必将 UserID 列添加到表中的情况下完成这项工作?
【问题讨论】:
标签: .net sql gridview sqldatasource