【问题标题】:How to set parameters for SqlDataSource UpdateCommand如何为 SqlDataSource UpdateCommand 设置参数
【发布时间】:2012-06-30 02:20:18
【问题描述】:

对于网格视图:

我第一次尝试在 SQLDataSource 中为 UpdateCommand 使用存储过程:

<asp:SqlDataSource ID="TECT_DataSource" runat="server"
    ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>"
    SelectCommand="SELECT MPID, User_Id, Last_Name, First_Name
                   FROM Scripts.vw_Tect_Exam"
    UpdateCommand="P_TECT_UPD_EXAM_ID" UpdateCommandType="StoredProcedure">  
    <UpdateParameters>                    
        <asp:Parameter Name="MPID" Type="Int32"  />  
        <asp:Parameter Name="User_Id" Type="String" />   
    </UpdateParameters> 
</asp:SqlDataSource>

我想知道 UpdateParameters 如何设置它们的值,因为我只指定了一个名称?
过程 P_TECT_UPD_EXAM_ID 需要两个参数作为输入:"in_MPID""in_UserId"
我还想知道如何将这些值映射到过程的输入参数,因为名称不同?

【问题讨论】:

    标签: asp.net gridview parameters sqldatasource updatecommand


    【解决方案1】:

    你可以这样设置它们:

    示例:示例中MPID为sql参数名@MPID

    <UpdateParameters>                    
        <asp:ControlParameter Name="MPID" ControlID="MPID_TextBox" PropertyName="Text  />  
        <asp:ControlParameter Name="User_Id" ControlID="User_Id_TextBox" PropertyName="Text  />  
    </UpdateParameters> 
    

    更正:刚刚发现您的 proc 参数名称,所以它必须是

    <asp:ControlParameter Name="in_MPID" ...............
    <asp:ControlParameter Name="in_User_Id" ...............
    

    希望这会有所帮助....

    【讨论】:

    • 我不确定我应该为 ControlID 使用什么,因为我使用的是 Gridview 文本框仅在我单击编辑按钮时出现,并且它们为每一行生成不同的名称。有什么想法吗?
    【解决方案2】:

    我真的不会使用SqlDataSource。如果您在代码隐藏中(或者在数据访问层中更好)调用数据库,将会容易得多。

    如果您使用SqlDataSource,则存储过程调用将仅在该页面上可用。每次您想拨打相同的电话时,您都必须复制并粘贴 SqlDataSource 或从中创建一个 UserControl

    以下示例使用实体框架连接数据库并检索记录:

    public List<Record> GetAllRecordsByUserName(string credentials)
    {
        List<Record> recordList;
        using (CustomEntities context = new CustomEntities())
        {
    
            IQueryable<Section> recordQuery = from records in context.Records
                                                  where records.UserName == credentials
                                                  select records; 
            recordList = recordQuery.ToList<Record>();
        }
        return recordList;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 2012-12-22
      • 2011-06-24
      相关资源
      最近更新 更多