2016-06-07 68 views
0

我設置了一個存儲過程,它使用一個輸入參數(@QuestionID)檢索單個記錄(記錄來自多個數據表的元素)。存儲過程的設置參數

已經創建了一個datareader,並在我的網頁上用這些值填充值。

我不知道該怎麼做,就是將某個輸入參數的值設置爲關閉某人點擊該鏈接以從列表(在引用頁面上)打開「詳細信息」頁面。

參考頁面,用戶點擊詳細記錄和QuestionID設置:

<asp:GridView ID="GridView1" runat="server" Caption="Submitted Questions" AllowSorting="True" 
    CaptionAlign="Left" EmptyDataText="You have not submitted any Questions." PageSize="5" 
    AutoGenerateColumns="false"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:Label ID="QuestionID" runat="server" Text='<%# Eval("QuestionID") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField DataField="KeyObjective" HeaderText="Key Objective" ItemStyle-Width="150" /> 
     <asp:BoundField DataField="SubmitDate" HeaderText="Submitted Date" ItemStyle-Width="50" /> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="Details" runat="server" Text="View Details" PostBackUrl='<%# "~/Submit/Submit_Detail.aspx?Id=" + Eval("QuestionID") %>'></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="Clone" runat="server" Text="Create Clone" PostBackUrl='<%# "~/Submit/Submit_Clone.aspx?Id=" + Eval("QuestionID") %>'></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
當前硬編碼的1 @QuestionID

DataReader的控制,我需要得到這個接受查詢字符串值是從發送引用頁:

string sConstr = ConfigurationManager.ConnectionStrings["CS1"].ConnectionString; 
SqlConnection Conn = new SqlConnection(sConstr); 

using (Conn) 
{ 
    SqlCommand command = new SqlCommand("QuestionDetail", Conn); 
    command.CommandType = CommandType.StoredProcedure; 

    command.Parameters.Add(new SqlParameter("@QuestionID", SqlDbType.BigInt)); 
    command.Parameters["@QuestionID"].Value = 1; 

    Conn.Open(); 
    SqlDataReader reader = command.ExecuteReader(); 

    while (reader.Read()) 
     txt_author.Text = reader["Author"].ToString(); 

    reader.Close(); 
} 

回答

2

您應該能夠從Request對象假設它你了LinkBut​​ton中提供的網址匹配,讀它(即查詢參數是「Id」):

command.Parameters["@QuestionID"].Value = Convert.ToInt32(Request["Id"]); 

如果您的參數不同,您只需要相應地調整它。

+0

試圖實現這一點,但價值似乎並沒有通過。 ASP.NET和C#非常新。輸入:command.Parameters [「@ QuestionID」]。Value = Convert.ToInt32(Request [「QuestionID」]); –

+0

'Request'集合將包含在請求期間傳入或可用的許多值。所以如果你有一個類似於'Page.aspx?id = 42'的querystring參數,那麼'id'就是關鍵,'42'就是值。因此,如果您需要在代碼隱藏中訪問它,您應該可以使用'Request [「id」]'來解決它,如上例所示。你指出你的Details鏈接會觸發這個,並且它看起來是格式「〜/ Submit/Submit_Clone.aspx?Id = {value}」,所以你可能會使用Request [「Id」]來匹配這個鍵/值。 –

+0

明白了,應該看到沒有幫助。謝謝一堆。 –