У меня есть 2 проблемы. На странице aspx у меня есть 3 RadioButtonLists (aka RBL), которые получают каждую из своих данных из таблицы базы данных. После выбора на любом RBL обратная передача происходит на той же странице, и значение этого конкретного RBL вводится в очередь запросов, которую ищет ListView, для фильтрации продуктов на основе запроса. Просмотр списка прекрасно работает, когда он считывает строку запроса, чтобы правильно фильтровать список вниз.My RadioButtonList не будет добавлять строку запроса или показывать выбранное значение после Postback - C# и .Net
выпуск 1 - при обратной передаче значение, выбранное вами из любого из 3 RBL, не выбирается при загрузке страницы. Таким образом, все мои RBL не имеют никакого значения, даже если у меня есть значение по умолчанию, установленное на странице. Как я могу загрузить свою страницу со значениями, выбранными в выбранных вами RBL?
Выпуск 2 - Если вы сделаете выбор на любом из 2-х других RBL, вместо того, чтобы обновлять запрос, он вытирает первое значение при повторном возврате. Поэтому, если вы выберете что-то в RBL-1, он отправится обратно с этим конкретным полем, обновленным в querystring, но затем, если вы выберете что-то в RBL-2, он вернет обратно, но только значение из RBL-2, и вытечет значение что вы только что выбрали из RBL-1. Как я могу загрузить свою страницу, сохраняя любой из ваших предыдущих выборов в строке запроса?
ASPX code:
<p>Normally Open or Closed:<asp:RadioButtonList ID="RadioButtonList1" runat="server" EnableViewState="true"
AutoPostBack="true" DataSourceID="NormalitySDS" DataTextField="Op"
DataValueField="Op" onselectedindexchanged="RadioButtonAllLists_SelectedIndexChanged">
</asp:RadioButtonList>
<asp:SqlDataSource ID="NormalitySDS" runat="server"
ConnectionString="<%$ 005 %>"
SelectCommand="SELECT DISTINCT [Op] FROM [Matrix] ORDER BY [Op]">
</asp:SqlDataSource>
</p>
<p>Sizes:<asp:RadioButtonList ID="RadioButtonList2" runat="server" EnableViewState="true"
AutoPostBack="True" DataSourceID="SizesSDS" DataTextField="SIZE" RepeatColumns="2"
DataValueField="SIZE" onselectedindexchanged="RadioButtonAllLists_SelectedIndexChanged">
</asp:RadioButtonList>
<asp:SqlDataSource ID="SizesSDS" runat="server"
ConnectionString="<%$ 005 %>"
SelectCommand="SELECT DISTINCT [SIZE] FROM [Matrix] ORDER BY [SIZE]">
</asp:SqlDataSource>
</p>
<p>Body:<asp:RadioButtonList ID="RadioButtonList3" runat="server" EnableViewState="true"
AutoPostBack="True" DataSourceID="BodySDS" DataTextField="Body"
DataValueField="Body" OnSelectedIndexChanged="RadioButtonAllLists_SelectedIndexChanged">
</asp:RadioButtonList>
<asp:SqlDataSource ID="BodySDS" runat="server"
ConnectionString="<%$ 005 %>"
SelectCommand="SELECT DISTINCT [Body] FROM [Matrix] ORDER BY [Body]">
</asp:SqlDataSource>
<SelectParameters>
<asp:QueryStringParameter DefaultValue="NC" Name="Op" QueryStringField="Op" Type="String" />
<asp:QueryStringParameter DefaultValue="0.25" Name="Sz" QueryStringField="Sz" Type="String" />
<asp:QueryStringParameter DefaultValue="304" Name="Body" QueryStringField="Body" Type="String" />
</SelectParameters>
Code-за:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Configurator
{
public partial class Product_Config_Full_wQuery : System.Web.UI.Page
{
string BaseUrl = "/Product_Config_Full_wQuery.aspx";
string op;
string op2;
string sz;
string body;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
op = (Server.UrlDecode(Request.QueryString["op"]));
RadioButtonList1.SelectedIndex = op2;
RadioButtonList1.DataBind();
sz = Server.UrlDecode(Request.QueryString["sz"]);
body = Server.UrlDecode(Request.QueryString["body"]);
}
}
// Combining all actions into a single protected-event
protected void RadioButtonAllLists_SelectedIndexChanged(object sender, EventArgs e)
{
op = RadioButtonList1.SelectedValue.ToString();
sz = RadioButtonList2.SelectedValue.ToString();
body = RadioButtonList3.SelectedValue.ToString();
if (op != null)
{
BaseUrl += "?Op=" + op + "&";
}
//else op = "NC";
if (sz != null)
{
BaseUrl += "Sz=" + sz + "&";
}
if (body != null)
{
BaseUrl += "Body=" + body + "&";
}
Response.Redirect(string.Format(BaseUrl, Server.UrlEncode(op), Server.UrlEncode(sz), Server.UrlEncode(body)));
}
Hi @freduardo Есть ли способ играть с хронометром на жизненном цикле страницы, чтобы сначала установить значения управления, а затем установить значения?
Кроме того, можете ли вы показать мне код того, как вы бы реализовали HiddenFields, основываясь на том, как моя страница в настоящее время кодируется? –
Я понял часть его. Во-первых, я изменил все кодировки/декодирования сервера на HTMLEncode вместо UrlEncode. –
Затем на лицевой стороне я изменил каждый из своих RBL, чтобы иметь значение по умолчанию, которое включало ВСЕ варианты. ** asp: ListItem> ** asp: RadioButtonList> –