我正在尝试更新表单
UPDATE TableName
SET field1 = NewValue
WHERE field1 = OldValue
但我不太确定如何使用GridView。
我有这个用于我的Gridview标记
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="SqlDataSource1" AllowPaging="True" DataKeyNames="cftm_emp_name" PageSize="30">
<Columns>
<asp:CommandField ButtonType="Image" SelectImageUrl="~/Images/sel.jpg" ShowSelectButton="True" />
<asp:BoundField DataField="cftm_emp_name" HeaderText="CF Team Member" SortExpression="cftm_emp_name" />
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
,SqlDataSource看起来像这样
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT [cftm_emp_name] FROM [rpc_extra_cf_team_members] ORDER BY [cftm_emp_name]" OnUpdating="SqlDataSource1_Updating" UpdateCommand="UPDATE rpc_extra_cf_team_members SET cftm_emp_name = ? WHERE cftm_emp_name = ?">
<UpdateParameters>
<asp:Parameter Name="cftm_emp_name" Type="String" />
<asp:ControlParameter ControlID="GridView1" Name="cftm_emp_name" PropertyName="SelectedValue" />
</UpdateParameters>
</asp:SqlDataSource>
编辑:
没有错误,但它只是不更新它。我在OnUpdating
事件处理程序中设置了一个断点,我注意到这两个参数都设置为OldValue
。
如果有任何其他信息需要我知道,我将不胜感激。
由于
答案 0 :(得分:1)
原因是您要更新名为 cftm_emp_name 的主键字段,在您的情况下,您将其用作 DataKeyNames =“cftm_emp_name”。我们用作GridView的DataKeyNames的表的字段充当表的主键。因此,在您的表中,“cftm_emp_name”是主键,您无法更新主键。尝试使用“cftm_emp_name”字段作为搜索条件的主键来更新表的其他字段。
例如,您可以使用更新查询,例如:
UpdateCommand="UPDATE rpc_extra_cf_team_members SET cftm_emp_add = @cftm_emp_add WHERE cftm_emp_name = @cftm_emp_name"
<UpdateParameters>
<asp:Parameter Name="cftm_emp_add" Type="String" />
<asp:Parameter Name="cftm_emp_name" Type="String" />
</UpdateParameters>
答案 1 :(得分:0)
将sqldatasource的datakeymember属性设置为表中的主键字段并尝试。希望它有所帮助