簡體   English   中英

我必須在aspx中創建數據源嗎? 我可以在C#中執行sqldatasource(sql SPROC),參數和databind嗎

[英]Do I have to create a datasource in aspx? Can I do sqldatasource (sql SPROC), parameters and databind in C#

首先,我會為一個新手問題道歉,但是我似乎找不到一個很好的例子說明我需要做什么。 嘗試在aspx頁中創建sqlDataSource並分配int類型的會話參數時,我在處理數據類型和存儲過程時遇到了麻煩。 我想嘗試在后面的代碼中完成整個操作,因此更容易調試。 對我來說,在aspx中完成部分工作,在背后的代碼中進行部分工作,似乎讓我感到困惑。 我希望聽到對此的意見,但是我這里的代碼顯示了我的嘗試的當前狀態。 你能幫我使它工作嗎?

protected void DoReport()
{
  int ClinicID = Convert.ToInt32(Session["selectedClinic"]);
  String connstr = System.Configuration.ConfigurationManager.ConnectionStrings 
        ["PC3PaymentConnection"].ConnectionString;
       using (SqlConnection conn = new SqlConnection(connstr))
       {
       using ( SqlCommand cmdMeasureHist = new SqlCommand("GetMeasureDetailHistory", conn))
        {
        cmdMeasureHist.CommandType = CommandType.StoredProcedure;
        SqlParameter pclinic = cmdMeasureHist.Parameters.Add("@ClinicID", SqlDbType.Int);
        pclinic.Value = ClinicID;
        SqlParameter pCMSMID = cmdMeasureHist.Parameters.Add("@CMMeasureID", SqlDbType.Int);
        pCMSMID.Value = Convert.ToInt32(ddMeasures.SelectedValue);
        SqlDataSource DsMeasureHist = new SqlDataSource();
        gvHistory.DataSourceID = "DsMeasureHist";
        conn.Open();
        DsMeasureHist.ExecuteNonQuery();
  gvHistory.DataBind();
   }

我只是不明白如何將命令掛接到網格視圖的數據源。 請幫忙!

您需要為此使用SqlDataAdapter,ExecuteNonQuery()通常用於執行insert,update,delete命令。 如果需要數據源,則可以使用DataReader或DataAdapter。 檢查以下示例:

using ( SqlCommand cmdMeasureHist = new SqlCommand("GetMeasureDetailHistory", conn))
        {
        cmdMeasureHist.CommandType = CommandType.StoredProcedure;
        SqlParameter pclinic = cmdMeasureHist.Parameters.Add("@ClinicID", SqlDbType.Int);
        pclinic.Value = ClinicID;
        SqlParameter pCMSMID = cmdMeasureHist.Parameters.Add("@CMMeasureID", SqlDbType.Int);
        pCMSMID.Value = Convert.ToInt32(ddMeasures.SelectedValue);

SqlDataAdapter da = new SqlDataAdapter(cmdMeasureHist); DataTable dt = new DataTable(); da.Fill(dt); gvHistory.DataSource = dt; gvHistory.DataBind();

這是一個如何在SQLDataSource中定義所有內容的示例。 您可能需要對此進行一些微調,但希望它將使您朝正確的方向發展。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:PC3PaymentConnection %>" 
        SelectCommand="GetMeasureDetailHistory"
SelectCommandType="StoredProcedure">
        <SelectParameters>
            <asp:ControlParameter Name="CMMeasureID"  ControlID="ddMeasures" 
PropertyName="SelectedValue" Type="Int32" />            
            <asp:SessionParameter Name="ClinicID" 
SessionField="selectedClinic" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM