asp.net,radiobuttonlist,在 url 中显示记录号

Posted

技术标签:

【中文标题】asp.net,radiobuttonlist,在 url 中显示记录号【英文标题】:asp.net, radiobuttonlist, show record number in url 【发布时间】:2011-06-11 03:48:31 【问题描述】:

我有一个单选按钮列表,可以在选择时查询表格并在文本区域中显示数据。现在我正在尝试增强我的代码,以便单选按钮的值显示在 URL 中。这样我就可以向用户发送指向收音机选择显示的内容的链接(即文章)。

到目前为止,当用户进行选择时,我已经能够成功地将“Article_PK”放置在 url 中。现在我只是坚持如何让我的数据绑定再次工作。所以基本上,我需要在 url 中读取“Article_PK”的值来显示 textarea 中的数据。需要有一些疯狂的编码技能的人来拯救这一天!

后面的代码--------

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  >

        <!-- 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   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>

【问题讨论】:

您是否真的在页面中添加了任何带有“?URL_PK=2”的内容来实际接收和处理查询字符串?或者由于某种原因处理查询字符串不是一个选项? 我可以使用查询字符串。 【参考方案1】:

如果您没有在 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",您应该会获得所需的效果。

【讨论】:

以上是关于asp.net,radiobuttonlist,在 url 中显示记录号的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET RadioButtonList ListItem 上设置 CSS 类

如何在 ASP.NET RadioButtonList 中的项目之间添加空格

如何将属性添加到输入标签 asp.net 内的 RadioButtonList 项

将一般的 ASP.NET 控件视为基于列表的控件(即 DropDownList、RadioButtonList 等)

有没有人为 ASP.NET MVC 实现 RadioButtonList For<T> ?

在ASP.NET中,如何使用RadioButtonlist控件来动态改变网页背景和颜色???