2013-05-30 2 views
1

Привет, ребята, я использовал сетку для вставки нескольких строк записи в базу данных. так выглядит мой сетчатый сет enter image description hereПозволяет проверять только одну радиокнопку в каждой строке сетки.

Проблема в том, что все переключатели могут быть выбраны, мне нужно выбрать только одну радиокнопку для каждой строки ... Моя веб-форма работает так, что пользователю нужно выбрать правильный ответ из двух текстовых полей с помощью переключателя, после чего мне придется отправить проверенный ответ на базу данных. Это возможно?

ASPX: `

   <asp:ButtonField Text="SingleClick" CommandName="SingleClick" 
        Visible="False" /> 

        <asp:TemplateField HeaderText="Question"> 
         <ItemTemplate> 
          <br /> 
          <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Answer"> 
         <ItemTemplate> 
          <br /> 
          <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
          <asp:RadioButton ID="RadioButton1" runat="server" /> 
          <br /> 
          <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> 
          <asp:RadioButton ID="RadioButton2" runat="server" /> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField ShowHeader="False"> 
         <FooterTemplate> 
          <asp:Button ID="btnAdd" runat="server" Text="+" onclick="btnAdd_Click1" /> 
         </FooterTemplate> 

        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 
    </td> 
</tr>` 

код позади:

protected void RadioButton1_CheckedChanged(object sender, EventArgs e) 
    { 
     //Clear the existing selected row 
     foreach (GridViewRow oldrow in GridView1.Rows) 
     { 
      ((RadioButton)oldrow.FindControl("RadioButton1")).Checked = false; 
     } 

     //Set the new selected row 
     RadioButton rb = (RadioButton)sender; 
     GridViewRow row = (GridViewRow)rb.NamingContainer; 
     ((RadioButton)row.FindControl("RadioButton1")).Checked = true; 

    } 
+1

вставить разметку сетки и связанный код – tariq

+0

я новичок в этом, я не написал много кода позади, потому что я не получил совершенно не знаю .... Обновлено – user2376998

+0

Почему бы вам не использовать [ radioobuttonlist] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobuttonlist.aspx)? – Emre

ответ

8

Я предполагаю, что вы говорите о ASP.NET. Вы пытались объединить переключатели вместе?

Вот пример.

<asp:RadioButton id="rBtn1" GroupName="Fruits" 
     Text="Apple" runat="server"/> 
<asp:RadioButton id="rBtn2" GroupName="Fruits" 
     Text="Orange" runat="server"/> 
<asp:RadioButton id="rBtn3" GroupName="Colors" 
     Text="Blue" runat="server"/> 
<asp:RadioButton id="rBtn4" GroupName="Colors" 
     Text="Red" runat="server"/> 

Когда Apple выбрана, Orange нельзя выбрать. Если оранжевый выбран, когда выбрано Apple, Apple автоматически не будет выбрано. Но когда Apple выбрана, когда вы нажмете «Синий», Apple не будет выбрана.

1

Просто попробуйте использовать javascript функцию как

<script language="javascript" type="text/javascript"> 
function SelectSingleRadiobutton(rdbtnid) { 
var rdBtn = document.getElementById(rdbtnid); 
var rdBtnList = document.getElementsByTagName("input"); 
for (i = 0; i < rdBtnList.length; i++) { 
if (rdBtnList[i].type == "radio" && rdBtnList[i].id != rdBtn.id) 
{ 
rdBtnList[i].checked = false; 
} 
} 
} 
</script> 

Grid View

<asp:GridView ID="gvdata" runat="server" CssClass="Gridview" AutoGenerateColumns="false" DataKeyNames="UserId" HeaderStyle-BackColor="#7779AF" HeaderStyle-ForeColor="White"> 
<Columns> 
<asp:TemplateField> 
<ItemTemplate> 
<asp:RadioButton id="rdbUser" runat="server" OnClick="javascript:SelectSingleRadiobutton(this.id)" /> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:BoundField DataField="UserName" HeaderText="Name"/> 
<asp:BoundField DataField ="FirstName" HeaderText="FirstName" /> 
<asp:BoundField DataField="LastName" HeaderText="LastName" /> 
<asp:BoundField DataField="Location" HeaderText="Location" /> 
</Columns> 
</asp:GridView> 

Попробуйте проверить aspdotnet

Проверить это asp.net

Надеется, что это работает.

+0

Это будет генерировать одну радиокнопку в строке .. Но OP хочет два переключателя на строку .. и он не беспокоится о выборе нескольких переключателей ряда ... он беспокоится о том, что в строке не следует выбирать несколько переключателей. – Pranav

0

Я думаю, вы можете продолжить так: -

protected void rbtnSelect_CheckedChanged(object sender, EventArgs e) 
{ 
RadioButton selectButton = (RadioButton)sender; 
GridViewRow gvrow = (GridViewRow)selectButton.Parent.Parent; 
var radio = (RadioButton)gvRow.FindControl("rdo");// rdo is ID of your radio button:- 
if(radio[0].id=selectButton.id) 
radio[1].checked=false; 
else if(radio[1].id=selectButton.id) 
radio[0].checked=false; 
} 
+0

, но у меня есть 2 переключателя с 2 разными идентификаторами, можно ли найти управление группой? а также где это происходит. спасибо за помощь – user2376998

0

Просто добавить скрипт на страницу, чтобы установить имя_группы:

$('input[type=radio]').each(function() { 
    var array = $(this).attr('name').split('$'); 
    $(this).attr('name', array[array.length - 1]); 
}); 

Это Виль настроить имя оказанной правильное название группы ,

1
<input id="HDDepMood_0" name="DepMood" type="radio" runat="server" /> 
Same name for the one group. 
0
<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
<script language="javascript"> 
    function singleRbtnSelect(chb) { 
     $(chb).closest("table").find("input:radio").prop("checked", false); 
     $(chb).prop("checked", true); 
    } 
</script> 
+0

onclick event of radiobutton - вызов этой функции в gridview of radiobutton – bhruguni

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