2012-02-24 4 views
0

내 html.asp 포스트 백 문제 및 html 컨트롤

<input id="rdb1" type="radio" name="rdbData" checked="checked" /> 
<input id="rdb2" type="radio" name="rdbData" /> 
<asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" /> 

버튼 만 asp:button하지만 페이지는 내가 체크 rdb2와 버튼 btnTest을 클릭하면 부하 RDB1이 selected.But입니다 not.First 시간이 radio buttons 있으며, 페이지가 새로 고쳐지고이 나는 것을 방지 button.To 1 redio을 선택 이 같은 시도 jquery. Document.ready 내부 :

var btnTest = "<%=btnTest.ClientID %>"; 
$('#' + btnTest).bind("click", function() { 
      if ($('#rdb1').attr("checked")) { 
       $('#rdb2').attr("checked", false); 
       $('#rdb1').attr("checked", true); 

      } 
      else { 
       $('#rdb1').attr("checked", false); 
       $('#rdb2').attr("checked", true); 
      } 
     }); 

그러나이 아니 우리가 situation.Where 이러한 유형의 내가 wrong.Any 아이디어 또는 alternative.Thanks를 얻고 처리 할 수 ​​work.How.

+0

'bind()'이벤트에서'e.preventDefault'를 시도하십시오. – elclanrs

답변

0

요구 사항이 ABSURD 인 것을 반복합니다. 어쨌든 그들은 코드를 보지 않고 서버 측 컨트롤을 사용한다고 어떻게 말할 것입니까? 이것은 젓가락이나 다른 것을 사용하여 코드를 작성해야하는 것과 같습니다.

<input id="rdb1" type="radio" name="rbdData" value="rbd1" <%= Rdb1Checked %> /> 
<input id="rdb2" type="radio" name="rbdData" value="rbd2" <%= Rdb2Checked %> /> 
<asp:Button ID="btnTest" runat="server" Text="Test" onclick="btnTest_Click" /> 

그리고 뒤에있는 코드 : 그들은 이러한 요구 사항을 왜

protected string Rdb1Checked 
{ 
    get 
    { 
     if (IsPostBack) 
     { 
      if (Request["rbdData"] == "rbd1") 
      { 
       return "checked"; 
      } 
      else 
      { 
       return ""; 
      } 
     } 

     return "checked"; 
    } 
} 

protected string Rdb2Checked 
{ 
    get 
    { 
     if (IsPostBack) 
     { 
      if (Request["rbdData"] == "rbd2") 
      { 
       return "checked"; 
      } 
      else 
      { 
       return ""; 
      } 
     } 

     return ""; 
    } 
} 

이 질문

그러나 단지 연습으로 나는 다음과 같은 솔루션을 제공합니다. 어쩌면 클라이언트 ID를보고 싶지 않을 수도 있습니다.이 경우 ClientIDMode를 Static으로 설정하고 자동 생성 된 ID를 피할 수 있습니다. null로 설정하여 완전히 제거 할 수 있습니다. Web Forms에서 라디오 버튼을 렌더링 할 때 서버 측 입력을 사용하는 경우 OK가 좋지 않을 수도 있습니다. 그 자체만으로는 요구 사항이 의미가 없습니다.

0

슈리

사실은 (jQuery를 추가) 클라이언트 클릭이 서버에 호출하기 전에 실행하는 것입니다. 셀렉트 인을 유지하려면 서버 측 컨트롤을 사용해보십시오.

<input id="rdb1" type="radio" name="rdbData" checked="true" runat="server" /> 
    <input id="rdb2" type="radio" name="rdbData" runat="server" /> 
    <asp:Button ID="btnTest" runat="server" Text="Test" OnClick="btnTest_Click" /> 

작동하는 경우이 방법을 사용해보십시오.

는 도움이되기를 바랍니다.

+0

'서버 측'컨트롤을 사용할 수 없습니다. 내 프로젝트 요구 사항입니다. 내가 직면 한 샘플 문제가 있습니다. –

0

"테스트"버튼을 클릭하면 페이지가 처음으로로드 된 것처럼 모든 클라이언트 측 컨트롤을 다시 렌더링하는 서버로 다시 게시됩니다. 전체 페이지가 다시로드되기 때문에 jQuery는 컨트롤 상태에 대해 "잊어 버려"접근 방식도 작동하지 않습니다. 이를 방지하는 가장 간단한 방법은 라디오 버튼이 서버 측에서 실행되도록하는 것입니다. 예 :

<asp:RadioButton id="rdb1" Checked="True" GroupName="RadioGroup1" runat="server" /> 
<asp:RadioButton id="rdb2" GroupName="RadioGroup1" runat="server" /> 

희망이 있습니다.

+0

'서버 측'컨트롤을 사용할 수 없습니다. 내 프로젝트 요구 사항입니다. 내가 직면 한 샘플 문제가 있습니다. –

+0

음 버튼은 서버 측 컨트롤이며 사용하고 있습니다. – Stilgar

+0

얍 프로젝트가 크고 프로젝트가 필요합니다. 여기에 모든 것을 게시 할 수 없습니다. 조건입니다. 이미 버튼이 서버 사이드라고 말하고 있습니다. –

1

요청이 있다면 사용자가 라디오 버튼을 클릭 할 때 숨겨진 필드를 업데이트하기 위해 jquery를 사용하여 입력 라디오 버튼이 선택된 상태를 유지할 숨겨진 필드 (서버 측)를 제안 해주십시오. 그런 다음 포스트 백에서 숨겨진 필드가 runat = "server"로 설정되면 해당 값 (viewstate)이 유지되고 jquery를 사용하여 올바른 라디오 버튼을 선택 항목으로 설정할 수 있습니다. 말이 돼 ?

-1

무엇을 의미합니까? "servr side controls"를 사용할 수 없거나 IDE가 허용하지 않는 요구 사항이 있습니까?

ASP.NET에서 모든 HTML 컨트롤은 서버 컨트롤에서 상속받습니다.단순히 runat = "server"를 추가하기 만하면 코드 숨김에서 해당 컨트롤에 액세스 할 수 있지만 페이지에서 정상 HTML 컨트롤로 렌더링됩니다.