【问题标题】:Dynamic set of radio buttons单选按钮的动态集
【发布时间】:2013-08-05 20:53:36
【问题描述】:

在一个页面上,我在查询字符串中有一个 ID。我需要从这个 ID 查询我的查找表并获取与此表中的 id 匹配的任何内容的列表。

表格如下:

id  workFlowID  nextStepID
2       27          28
3       28          29
4       27          29

如果查询字符串的 ID 为 27,那么它将只返回两个结果。

如何为这两个结果创建一个动态单选按钮?

下面是我将使用的两张表。

select * from jm_AccountworkFlowDetail wfd
left join jm_accountworkflowsteps wfs on wfs.workFlowID = wfd.workID

以下是上述查询将返回的内容:

workID  name               status   nextStep    id  workFlowID  nextStepID
27      BaseLevelWFI       NULL     NULL        2      27          28
27      BaseLevelWFI       NULL     NULL        4      27          29
28      NextStepBaseLevel  NULL     NULL        3      28          29
29      AfterNextStepBase  NULL     NULL        NULL   NULL        NULL

wfd 包含前 4 列,还包含要使用的名称。 wfs 是查找表,我将如何判断第一个表中的项目是否应该有单选按钮。

工作项可能没有任何下一步并且不会返回任何结果,因此它应该有任何单选按钮。有些应该返回一个,有些会返回多个。

我需要的是一个单选按钮的动态列表,其中包含要设置为名称的文本和要设置为 workID 的值。

这可以在页面后面的代码之外完成吗?

【问题讨论】:

  • 您在使用 ASP.NET WebForms 吗?听起来很像。
  • @JeremyPridemore 是的 asp.net 网络表单很抱歉。 :)
  • 你考虑过使用MVC吗?
  • @davids 我们确实使用 MVC 只是不用于这个项目。遗憾的是,目前无法将其切换到 MVC。

标签: c# asp.net webforms


【解决方案1】:

RadioButtonList 有一个 DataSource 属性,您可以绑定到该属性。

您的aspx 方将拥有

<asp:RadioButtonList runat="server" ID="radioButtonList" />

aspx.cs 方面

this.radioButtonList.DataSource = myDataSource;
this.radioButtonList.DataBind();

除此之外,我并不完全清楚您想要什么。我的另一个建议是使用 LINQ-to-SQL 之类的东西,这样您就可以使用 C# 的所有 LINQy 优点

【讨论】:

  • 感谢 dav_i,我也偶然发现了这个问题,并且已经得到了我需要的东西。
  • 很高兴听到。祝你好运。
【解决方案2】:

如果您想在没有代码的情况下执行此操作,请查看 SqlDataSource。这是一个包含如何从查询字符串中读取的链接:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.querystringparameter.querystringfield.aspx

然后将结果绑定到您的 RadioButtonList。

【讨论】:

  • 谢谢 Jan,在此之前我偶然发现了单选按钮列表,它似乎对我正在寻找的东西很好。
【解决方案3】:

您可以使用

过滤您返回的数据集
"WorkFlowID = " + Request.QueryString["ID"] + " and NextStepID is not null" 

(虽然不完全一样,因为这很容易受到 SQL 注入的攻击。)

然后将过滤后的数据集绑定到 ASP.NET 中继器控件

<asp:Repeater id="cdcatalog" runat="server">


<ItemTemplate>
    <%# DataBinder.Eval(Container.DataItem, "name") %>
    <input type='radio' name='nextStepId' 
         value='<%# DataBinder.Eval(Container.DataItem, "nextStepID") %>'/>
    <br/>
</ItemTemplate>
</asp:Repeater>

【讨论】:

    猜你喜欢
    • 2011-10-03
    • 2016-03-31
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多