我在将项目更新到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/

10-11 01:09