2011-01-20 5 views
0

Можно создать дубликат:
linking to a radio button selection, asp.net c#для URL, чтобы указать выбора радио кнопки

У меня есть страница с текстовой и радио кнопок. текстовая область заполняется данными, основанными на выборе переключателя. Я хочу, чтобы переключатель переключался в URL-адресе, чтобы пользователь мог ссылаться на выбор переключателя.

Я надеюсь, что все, что мне нужно сделать, изменить свой запрос, чтобы включить значение переключателя. вот данные, которые были вызваны fidler, когда я делаю выбор переключателя.

__EVENTTARGET ctl00$MainContent$RadioButtonList1$6 
__EVENTARGUMENT 
__LASTFOCUS 
__VIEWSTATE /+++PC9wPg0KPHA+/.... 
__EVENTVALIDATION /wEWCwKY7d6oAQLh8vmTCALk7M7lDQK+6NunDwK/6OenDwK86OenDwK86OunDwK86POnDwK96NenDwK96NunDwKxh73KA3Q+PMuKU/JUCKsF1aiY2DNLu7/pFFni/Qtz+7FXy35g 
ctl00$MainContent$RadioButtonList1 41 

я надеюсь мой URL просто нужно искать что-то вроде этого, чтобы указать на значение кнопки радио, но и все, что я нужен соответствующий синтаксис:

http://www.test.com/test.aspx?ctl00$MainContent$RadioButtonList1$41 

--- код позади - -

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) 
    { 

    } 


    } 



} 
+0

Вопрос jsut произошел со мной ... как ваша страница в настоящее время меняет текст на основе переключателя? Вышеприведенный код, похоже, предполагает, что при обратной передаче он делает перенаправление, заставляя меня думать, что либо: а) вы делаете это на стороне клиента, либо b), что страница, на которую вы перенаправляете, - это тот, который вы хотите получить, а не тест. ASPX.Делает ли http://www.test.com/frm_Articles.aspx?Article_PK=41 действительно то, что вы хотите? – Chris

+0

Я получаю психическую вибрацию от вашего вопроса. Он говорит ... Спросите своих детей: «Каковы были три лучшие вещи, которые произошли сегодня» – Will

ответ

0

Следует отметить, что вы неверно истолковали свой URL. Оно должно быть:

http://www.test.com/test.aspx?ctl00$MainContent$RadioButtonList1=41 

(обратите внимание, что третий в последний символ является =

Кроме того это будет зависеть от того, как ваша страница работает в терминах подбирая кнопку выбранного радио Мой совет будет.. но я бы заподозрил, что если вы делаете это на основе события, запускающего загрузку страницы (т. е. какого-то поведения обратной передачи), то это не сработает.

Если это в этом случае вы просто захотите что-то сделать на загрузке страницы, чтобы проверить, существует ли это значение в URL-адресе и установить его перед загрузкой текста. Если вы в конечном итоге опуститесь вниз это маршрут, который вы, возможно, захотите рассмотреть, используя более четко определенный и удобный для пользователя параметр querystring. В частности, идентификатор, который у вас есть, построен на основе его положения в иерархии управления. Если бы вы перепроектировали свою структуру HTML, идентификатор мог бы измениться.

Дополнительно ...

С кодом вы при условии, где вы установите SelectedIndex вашего списка RadioButton вам нужно выяснить, какое значение вам нужно, прежде чем установить его и установить его в 0, если не имеют лучшего значения (хотя похоже, что вы устанавливаете значение 0 до привязки, которое кажется лишним). Что-то вроде этого может работать (не скомпилировано или протестировано так извиниться за опечатки - оно предназначено, чтобы дать вам общую идею больше, чем быть готовым кодом).

if (Page.IsPostBack == false) 
{ 
    RadioButtonList1.DataBind(); 
    //Check if you have a value to set. 
    if (Request.Querystring(RadioButtonList1.ClientID)!=null) 
    { 
     //Get the value 
     string setValue = Request.Querystring(RadioButtonList1.ClientID) 
     //Find the right radio option to select 
     foreach(ListItem item in RadioButtonList1.Items) 
     { 
      if (item.Value == setValue) 
      { 
       item.Selected = true; 
       break; 
      } 
     } 
    } 

} 

Я предполагаю, что по умолчанию выбранный индекс будет 0, если ничто не установлено как выбрано иначе.

В любом случае, этот код предназначен как отправная точка для работы. Могут быть другие способы сделать это, а некоторые могут быть даже лучше.

+0

спасибо. url не дал мне результаты, которые я искал:/ –

+0

Я предполагаю, что вам нужно будет добавить немного кода на сервер для проверки первой загрузки (то есть не обратной передачи), есть ли у вас что-то в url и предпринять соответствующие действия. – Chris

+0

как я могу настроить чек? Я отправил свой текущий код позади. Спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^