ASP.NET - 如何创建单选按钮maxtrix

时间:2017-05-19 03:37:32

标签: c# asp.net matrix radiobuttonlist

我想创建一个单选按钮maxtrix,如下图所示!

enter image description here

我尝试使用重复,但行和列之间的数据不同。所以我不能为转发器设置数据源。有办法分组2列表,并为Repeater设置数据源,通过调用Eval("row")Eval("column")Eval("mark")

显示数据int Repeater
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>

==感谢阅读==

1 个答案:

答案 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的评级非常不满意。

您可以使用javascript在隐藏字段中保存1,2,3或4,这将是您对密钥的评级。

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