我在将项目更新到ASP.NET GridView(旧代码)时遇到困难。
我的存储过程可以简化为:
UPDATE myTable SET FieldA = @FieldA, FieldB = @FieldB, FieldC = @FieldC WHERE Id = @Id
我的数据源是s,它是:
<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>
->
<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值而不使用后面的代码。
最佳答案
尝试使用Bind关键字而不是Eval将FieldB绑定到aspx页面上的隐藏字段。
关于c# - ASP.NET FormView无法执行存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41146280/