2017-05-19 216 views
1

我想创建一个单选按钮maxtrix像下面的图片!ASP.NET - 如何创建单选按钮maxtrix

enter image description here

我尝试使用Repeate,但数据的行和列之间的不同。所以我无法为中继器设置数据源。通过调用Eval("row"),有办法2组列表,以及直放站设置数据源,数据显示INT直放站Eval("column")Eval("mark")

var lstMatrixAnswer = JsonConvert.DeserializeObject<Answer>(json); //Get from json format 
    var row = lstMatrixAnswer.row.Select(p => p.row).ToList(); //Row datasource 
    var col= lstMatrixAnswer.column.Select(p => p.answer + "///" + p.mark).ToList(); //Column datasource (i want radio values is "mark") 

public class AnswerCol 
{ 
    public string answer { get; set; } 
    public int mark { get; set; } 
} 

public class AnswerRow 
{ 
    public string row { get; set; } 
} 

public class Answer 
{ 
    public List<AnswerRow> row { get; set; } 
    public List<AnswerCol> column { get; set; } 
} 

//这是中继器,但我确定它是不可能的。

 <asp:Repeater ID="rptAnswer" runat="server"> 
            <HeaderTemplate> 
             <table class="table table-striped table-hover table-bordered dataTable" id="tblObject"> 
              <thead> 
               <th style="vertical-align: middle"><%#Eval("col")%></th> 
              </thead> 
              <tbody> 
            </HeaderTemplate> 
            <ItemTemplate> 
             <tr> 
              <td> 
               <%#Eval("answer") %> 
              </td> 
              <td> 
               <input id="Radio1" type="radio" runat="server" value='<%#Eval("mark") %>' /> 
              </td> 
             </tr> 
            </ItemTemplate> 
            <FooterTemplate> 
             </tbody> 
        </table> 
            </FooterTemplate> 
           </asp:Repeater> 

==感谢阅读==

+0

你可以显示你正在使用的cshtml来显示它吗? – robjam

+0

我已更新,但我确定它不可能 –

回答

1

我不喜欢的东西这样的方式回到仅使用asp.net和javascript
我在这里只张贴一小部分,希望它够你让事情继续下去

<table width="100%" style="border-collapse:collapse;text-align:center" cellpadding="2" border="0" class="qoptions"> 
        <tr style="font-weight:bold"> 
           <td align="left" width="15%">Function</td> 
           <td style="color:#b91d47; font-size:large;font-weight:bold; text-align:center">Highly Dissatisfied</td> 
           <td style="color:#b91d47; font-size:large;font-weight:bold; text-align:center">Dissatisfied</td> 
           <td style="color:#b91d47; font-size:large;font-weight:bold; text-align:center">Satisfied</td> 
           <td style="color:#b91d47; font-size:large;font-weight:bold; text-align:center">Highly Satisfied</td> 
           <td style="font-weight:bold;" align="right"><span style="padding-right:75px">Comments <span class="instructions">(optional)</span></span></td> 
          </tr> 

          <tr style="background-color:#FDE6EA" id="BST"> <%--id="F0Q1"--%> 
           <td align="left" id="F0Name" >BST</td> 
           <td><asp:RadioButton ID="rbQ1F0_1" runat="server" GroupName="Q1F0" /></td> 
           <td><asp:RadioButton ID="rbQ1F0_2" runat="server" GroupName="Q1F0" /></td> 
           <td ><asp:RadioButton ID="rbQ1F0_3" runat="server" GroupName="Q1F0" /></td> 
           <td><asp:RadioButton ID="rbQ1F0_4" runat="server" GroupName="Q1F0" /></td> 
           <td align="right"><asp:TextBox ID="txtQ1F0" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);" />&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q1F0Val" Value="" /> 
          </tr> 

          <tr class="altrow" id="F1Q2"> 
           <td align="left" id="F1Name">F1</td> 
           <td><asp:RadioButton ID="Q2F1_1" runat="server" GroupName="Q2F1" /></td> 
           <td><asp:RadioButton ID="Q2F1_2" runat="server" GroupName="Q2F1" /></td> 
           <td ><asp:RadioButton ID="Q2F1_3" runat="server" GroupName="Q2F1" /></td> 
           <td><asp:RadioButton ID="Q2F1_4" runat="server" GroupName="Q2F1" /></td> 
           <td align="right"><asp:TextBox ID="txtQ2F1" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);" />&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q2F1Val" Value="" /> 

           </tr> 
          <tr id="F2Q2"> 
           <td align="left" id="F2Name" >F2</td> 
           <td><asp:RadioButton ID="Q2F2_1" runat="server" GroupName="Q2F2" /></td> 
           <td><asp:RadioButton ID="Q2F2_2" runat="server" GroupName="Q2F2" /></td> 
           <td><asp:RadioButton ID="Q2F2_3" runat="server" GroupName="Q2F2" /></td> 
           <td><asp:RadioButton ID="Q2F2_4" runat="server" GroupName="Q2F2" /></td> 
           <td align="right"><asp:TextBox ID="txtQ2F2" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);" />&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q2F2Val" Value="" /> 
          </tr> 
          <tr class="altrow" id="F3Q2"> 
           <td align="left" id="F3Name" >F3</td> 
           <td><asp:RadioButton ID="Q2F3_1" runat="server" GroupName="Q2F3" /></td> 
           <td><asp:RadioButton ID="Q2F3_2" runat="server" GroupName="Q2F3" /></td> 
           <td><asp:RadioButton ID="Q2F3_3" runat="server" GroupName="Q2F3" /></td> 
           <td><asp:RadioButton ID="Q2F3_4" runat="server" GroupName="Q2F3" /></td> 
           <td align="right"><asp:TextBox ID="txtQ2F3" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);"/>&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q2F3Val" Value="" /> 
          </tr> 
          <tr id="F4Q2"> 
           <td align="left" id="F4Name" >F4</td> 
           <td><asp:RadioButton ID="Q2F4_1" runat="server" GroupName="Q2F4" /></td> 
           <td><asp:RadioButton ID="Q2F4_2" runat="server" GroupName="Q2F4" /></td> 
           <td><asp:RadioButton ID="Q2F4_3" runat="server" GroupName="Q2F4" /></td> 
           <td><asp:RadioButton ID="Q2F4_4" runat="server" GroupName="Q2F4" /></td> 
           <td align="right"><asp:TextBox ID="txtQ2F4" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);"/>&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q2F4Val" Value="" /> 
          </tr> 
          <tr class="altrow" id="F5Q2"> 
           <td align="left" id="F5Name" >F5</td> 
           <td><asp:RadioButton ID="Q2F5_1" runat="server" GroupName="Q2F5" /></td> 
           <td><asp:RadioButton ID="Q2F5_2" runat="server" GroupName="Q2F5" /></td> 
           <td><asp:RadioButton ID="Q2F5_3" runat="server" GroupName="Q2F5" /></td> 
           <td><asp:RadioButton ID="Q2F5_4" runat="server" GroupName="Q2F5" /></td> 
           <td align="right"><asp:TextBox ID="txtQ2F5" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);"/>&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q2F5Val" Value="" /> 
          </tr> 
          <tr id="F6Q2"> 
           <td align="left" id="F6Name" >F6</td> 
           <td><asp:RadioButton ID="Q2F6_1" runat="server" GroupName="Q2F6" /></td> 
           <td><asp:RadioButton ID="Q2F6_2" runat="server" GroupName="Q2F6" /></td> 
           <td><asp:RadioButton ID="Q2F6_3" runat="server" GroupName="Q2F6" /></td> 
           <td><asp:RadioButton ID="Q2F6_4" runat="server" GroupName="Q2F6" /></td> 
           <td align="right"><asp:TextBox ID="txtQ2F6" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);"/>&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q2F6Val" Value="" /> 
          </tr> 
          <tr class="altrow" id="F7Q2"> 
           <td align="left" id="F7Name" >F7</td> 
           <td><asp:RadioButton ID="Q2F7_1" runat="server" GroupName="Q2F7" /></td> 
           <td><asp:RadioButton ID="Q2F7_2" runat="server" GroupName="Q2F7" /></td> 
           <td><asp:RadioButton ID="Q2F7_3" runat="server" GroupName="Q2F7" /></td> 
           <td><asp:RadioButton ID="Q2F7_4" runat="server" GroupName="Q2F7" /></td> 
           <td align="right"><asp:TextBox ID="txtQ2F7" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);"/>&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q2F7Val" Value="" /> 
          </tr> 
          <tr id="F8Q2"> 
           <td align="left" id="F8Name" >F8</td> 
           <td><asp:RadioButton ID="Q2F8_1" runat="server" GroupName="Q2F8" /></td> 
           <td><asp:RadioButton ID="Q2F8_2" runat="server" GroupName="Q2F8" /></td> 
           <td><asp:RadioButton ID="Q2F8_3" runat="server" GroupName="Q2F8" /></td> 
           <td><asp:RadioButton ID="Q2F8_4" runat="server" GroupName="Q2F8" /></td> 
           <td align="right"><asp:TextBox ID="txtQ2F8" runat="server" TextMode="MultiLine" Rows="2" Columns="35" onKeyUp="javascript:Count(this);" onChange="javascript:Count(this);"/>&nbsp;</td> 
           <asp:HiddenField runat="server" ID="Q2F8Val" Value="" /> 
          </tr> 

         </table> 

例子:Q2F8_1表示问题2功能8 _1的高度评价该disatisfied。

你可以使用javascript来保存1,2,3或4到隐藏字段,这将是你的关键评分。

访问你的c#代码中的隐藏字段,并在那里播放你的代码

+0

谢谢,但我的数据是动态的! –

+0

没问题,它不难o动态生成这些字段 – Saurabh

+0

但我不知道如何填充我的数据到表中:( –