对于Gridview:
我第一次尝试在UpdateCommand的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"
我还想知道如何将这些值映射到过程的输入参数,因为它们的名称是不同的。
发布于 2012-06-28 22:29:29
您可以像这样设置它们:
示例:在示例中,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" ...............希望这能帮上忙。
发布于 2012-06-28 22:29:50
我真的不会使用SqlDataSource。如果在代码隐藏中(或者更好的是在数据访问层中)调用数据库,将会容易得多。
如果使用SqlDataSource,则存储过程调用将仅在该页上可用。每次你想进行同样的调用时,你都必须复制并粘贴SqlDataSource,或者创建一个UserControl。
下面的示例使用Entity Framework连接到数据库并检索记录:
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;
}https://stackoverflow.com/questions/11246747
复制相似问题