2017-05-19 127 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

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