2011-01-18 25 views
1

私は選択時にテーブルを照会し、テキストエリアにデータを表示するラジオボタンリストを持っています。今私はラジオボタンの値がURL内に表示されるように自分のコードを強化しようとしています。そうすれば、ラジオの選択肢(つまり記事)によって表示されるコンテンツにユーザーのリンクを送ることができます。asp.net、radiobuttonlist、URLにレコード番号を表示

これまでのところ、ユーザーが選択すると「Article_PK」をURL内に配置できました。今私はちょうど私のdatabindを再び働かせる方法に立ち往生している。ですから、基本的には、テキストエリア内のデータを表示するためにurlの "Article_PK"の値を読み取る必要があります。その日を救うために何か狂ったコーディングスキルを持つ人が必要です!

public partial class frm_Articles : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 


     if (Page.IsPostBack == false) 
     { 


      RadioButtonList1.SelectedIndex = 0; 
      RadioButtonList1.DataBind(); 

     } 

     else 
     { 

      string strRedirect; 

      strRedirect = "frm_Articles.aspx?Article_PK=" + RadioButtonList1.SelectedValue.ToString(); 

      Response.Redirect(strRedirect); 


     } 
    } 



    protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 

    //  

    } 
    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 
     try{ 
     e.Command.Parameters["@URL_FK"].Value = Session["URL_PK"]; 


     } 
    catch (Exception ex) 
    { 

    } 


    } 



} 

--------背後にあるコード----- ASPX

<tr valign="top"> 
     <td width="75%"> 

     <!-- Body --> 
      <asp:DetailsView ID="DetailsView3" runat="server" AutoGenerateRows="False" DataSourceID="SqlDataSource2" Height="100%" Width="100%" GridLines="None"> 
       <Fields> 


        <asp:TemplateField HeaderText="ArticleText" ShowHeader="False" SortExpression="ArticleText"> 
         <EditItemTemplate> 
          <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ArticleText") %>'></asp:TextBox> 
          <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="*"></asp:RequiredFieldValidator> 
         </EditItemTemplate> 
         <InsertItemTemplate> 
          <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ArticleText") %>'></asp:TextBox> 
          <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="*"></asp:RequiredFieldValidator> 
         </InsertItemTemplate> 
         <ItemTemplate> 

       <%# Eval("ArticleText") %> 


         </ItemTemplate> 
        </asp:TemplateField> 
       </Fields> 
      </asp:DetailsView> 
      <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:CSFConnectionString %>" SelectCommand="SELECT [ArticleText], [Title] FROM [TEST_Article] WHERE ([Article_PK] = @Article_PK)" onselecting="SqlDataSource2_Selecting"> 
       <SelectParameters> 
        <asp:ControlParameter ControlID="RadioButtonList1" DefaultValue="1" Name="Article_PK" PropertyName="SelectedValue" Type="Int32" ConvertEmptyStringToNull="True" /> 
       </SelectParameters> 
      </asp:SqlDataSource> 
      </td> 
      <td width="25%" align="left" valign="top"> 
               <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TESTConnectionString %>" SelectCommand="SELECT Article_PK, ArticleText, Score, Title, Url_FK FROM TEST_Article WHERE (Url_FK = @URL_FK)" onselecting="SqlDataSource1_Selecting"> 
                <SelectParameters> 
                 <asp:Parameter DefaultValue="0" Name="Url_FK" Type="Int32" /> 
                </SelectParameters> 
               </asp:SqlDataSource> 
               <h2>Articles</h2> 
               <h2>Select an article below:</h2> 
               <asp:RadioButtonList ID="RadioButtonList1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="Title" DataValueField="Article_PK"> 
               </asp:RadioButtonList> 
               <br /> 

              </td></tr> 
+0

「URL_PK = 2」のページに実際に追加して、実際にクエリ文字列を取り込んで処理しましたか?または何らかの理由でオプションではないクエリ文字列を扱っていますか? – Refugee

+0

私はクエリ文字列を操作できます。 –

答えて

0

あなたは、クエリ文字列を処理するために、あなたのPageLoadイベントで何かを構築していなかった場合コントロールがポストバックを行うときに何も起こりません。

あなたpageLoadイベント内には、何かしたい:

if(IsPostBack) 
{ 
    if(Request.QueryString["URL_PK"] != null) 
    { 
    int url_pk; 
    if(int.TryParse(Request.QueryString["URL_PK"].ToString(), out url_pk) 
    { 
     //do whatever you need to do with url pk here 
    } 
} 

autopostback="true"を持っている、あなたは、所望の効果を得る必要があり、あなたのラジオボタンを設定します。

+0

あなたは私を正しい軌道に乗せます。ありがとう。 –

関連する問題