如何设置SqlDataSource的更新命令参数(How to set parameters for

2019-07-30 03:34发布

对于一个GridView:

我试图使用存储过程中的更新命令一个SqlDataSource第一次:

<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"
我也想知道如何为名称是不同的这些值的输入参数的程序映射?

Answer 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 PARAM名称,以便它必须是

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

希望这可以帮助....



Answer 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;
}


文章来源: How to set parameters for SqlDataSource UpdateCommand