我在将项目更新为ASP.NET GridView(旧代码)时遇到了困难。
我的存储过程可以简化为:
UPDATE myTable SET FieldA = @FieldA, FieldB = @FieldB, FieldC = @FieldC WHERE Id = @Id
我的数据源如下:
<asp:SqlDataSource ID="DS" runat="server" ConnectionString="<%$ ConnectionStrings:wsg_DataWriter %>"
SelectCommand="MySelectSP" SelectCommandType="StoredProcedure"
UpdateCommand="MyUpdateSP" UpdateCommandType="StoredProcedure">
<SelectParameters>
<asp:QueryStringParameter Name="Id" QueryStringField="Id" />
</SelectParameters>
<UpdateParameters>
<asp:QueryStringParameter Name="idWsgProgrammeOption" QueryStringField="idWsgProgrammeOption" />
</UpdateParameters>
</asp:SqlDataSource>
我的FormView如下:
<asp:FormView ID="FV" runat="server" DataKeyNames="Id" DataSourceID="DS" >
<EditItemTemplate>
<asp:TextBox ID="TB_FieldA" runat="server" Text='<%# Bind("FieldA") %>' />
<asp:ImageButton ID="IB_FieldB" runat="server" CommandName="UpdateProgramme" CommandArgument='<%# Eval("Id") %>'
ImageUrl='<%# (!Convert.ToBoolean(Eval("FieldB"))) ? "~/1.gif" : "~/2.gif" %>' OnCommand="On_FieldB"/>
<asp:TextBox ID="TB_FieldC" T runat="server" Text='<%# Bind("FieldC") %>' />
<asp:ImageButton ID="i_imgbtnEnregistrer" runat="server" AlternateText="Enregistrer"
CommandName="Update" ImageUrl="~/App_Themes/admindefaut/image/bouton/enregitrer.gif" OnClick="OnClick"/>
</EditItemTemplate>
</asp:FormView >
它不起作用:我认为存储过程无法执行。
我非常接近让它发挥作用。问题似乎来自于FieldB与SP的绑定。
如果我这样改变它就可以了:
<UpdateParameters>
<asp:QueryStringParameter Name="idWsgProgrammeOption" QueryStringField="idWsgProgrammeOption" />
</UpdateParameters>
- &GT;
<UpdateParameters>
<asp:QueryStringParameter Name="idWsgProgrammeOption" QueryStringField="idWsgProgrammeOption" />
<asp:Parameter Name="FieldB" />
</UpdateParameters>
并添加:
protected void OnClick(object sender, EventArgs e)
{
FV.UpdateParameters["FieldB"].DefaultValue= "1";
}
所以不知何故,.NET设法获得FieldA和FieldB的正确值并将它们传递给SP。但它无法获取正确的FieldB值。
有人可以帮我一把吗?我需要传递正确的FieldB值,而不使用后面的代码。
答案 0 :(得分:0)
尝试使用Bind关键字将FieldB绑定到aspx页面上的隐藏字段,而不是Eval。