0

我是一个 asp.net 页面,允许站点管理员选择一个用户作为“系统主席”。为此,我在网格视图中列出了用户,并有一列单选按钮来显示当前的椅子是谁,或者更改分配的椅子。我正在为按钮使用 html 输入(type=radio)。页面加载时,如果“系统”分配了“椅子”,我需要检查相关的单选按钮。我正在尝试使用 javascript 或 jquery 来执行此操作。我试过的脚本是:

jQuery尝试1:

<script type="text/javascript">
   function initRadioButtons() {
      $("#user268").attr('checked', 'checked');
   }
</script>

jQuery 尝试 2:函数 initRadioButtons() { $("#user268").prop('checked', true); }

javascript(rb设置为null):

<script type="text/javascript">
      function initRadioButtons() {
         var rb = document.getElementById(user268");
      }
</script>

这是我的 .aspx 文件中的网格视图:

<Custom:GridView ID="gvUsers" DataSourceID="dsUsers" CellPadding="3" AutoGenerateColumns="false"
     ArrowUpImageUrl="~/images/SortUpArrow.jpg" ArrowDownImageUrl="~/images/SortDownArrow.jpg"
     Width="100%" ShowWhenEmpty="true" EmptyDataText="No Users Returned" DataKeyNames="userID"
    AllowSorting="true" runat="server">
       <Columns>
          <asp:TemplateField HeaderText="AST Chair" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle"
           SortExpression="IsChair">
             <ItemTemplate>
                <input type="radio" id='user<%# Eval("userID") %>' name="isChair" value='<%# Eval("userID") %>' onclick="radioButtonClicked(this);" />
                </ItemTemplate>
          </asp:TemplateField>
          <asp:BoundField HeaderText="Username" DataField="userName" sortExpression="userName" ItemStyle-HorizontalAlign="Left" />
          <asp:BoundField HeaderText="First Name" DataField="FirstName" SortExpression="FirstName" ItemStyle-HorizontalAlign="Left" />
          <asp:BoundField HeaderText="Last Name" DataField="LastName" SortExpression="LastName" ItemStyle-HorizontalAlign="Left" />
    </Columns>
</Custom:GridView>

我究竟做错了什么?

4

1 回答 1

0

我建议两件事。首先是 JavaScript:

<script type="text/javascript">
   $(document).ready(function(){
       initRadioButtons();
   });

   function initRadioButtons() {
      $(".user268").attr('checked', 'checked'); // notice i changed to class for next one
   }
</script>

然后我会检查正在运行的页面的视图源,它是否在 ID 字段中显示了这个?

id='user<%# Eval("userID") %>'

我认为你必须以不同的方式做那条线。它必须是runat="server"数据绑定才能工作。因为你有runat="server"然后你实际上必须使用一个类,因为网络表单会自动分配一个 ID。它还必须是包含在<%# %>. 所以我的猜测是这条线应该更像:

<input runat="server" type="radio" class='<%# string.Format("user{0}", Eval("userID")) %>' name="isChair" value='<%# Eval("userID") %>' onclick="radioButtonClicked(this);" />

现在我们已经做到了这一点,我认为您将遇到的下一个问题是您<input>在 GridView 中使用了一个标签,因此它不会作为绑定的一部分被回发。通常,您会使用它<asp:RadioButton>来执行此操作。

于 2013-07-10T16:13:03.610 回答