您好我在jquery的帮助下开发了一个asp.net应用程序。我的应用程序中有一个gridview。它有每行的复选框。与复选框一起,我将一些值绑定到隐藏字段。 这是我的gridview代码。
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkRow" runat="server" />
<asp:HiddenField ID="Hidden" runat="server" Value='<%#Eval("Name")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
上面的代码呈现输出,例如
Name
chkbox Andy
chkbox Marry
chkbox Daniel
我将相同的名称(在Boundfield中使用)绑定到hiddenfield。我有一个带有多选功能的下拉菜单。每当我从下拉列表中选择Andy时,我想在gridview中禁用Andy复选框。我正在尝试如下。我在第一个数组中得到dropdownselected值,在第二个数组中得到所有隐藏值字段。我将常见元素推送到第三个数组。 这是我的代码。
var result = new Array();
for (var i = 0; i < ResultArrayFirst.length; i++) {
if (selected.indexOf(ResultArrayFirst[i]) >= 0) {
result.push(ResultArrayFirst[i]);
}
}
例如,结果数组将包含诸如Andy,Marry之类的值。在这种情况下,我想禁用网格中的复选框,这是留给安迪和玛丽。我尝试了最好的水平,无法解决它。任何帮助,将不胜感激。谢谢你。
我尝试如下。
for (var k = 0; k < result.length; k++)
{
$('#<%= GridView1.ClientID %> input[type="hidden"]').each(function () {
if($(this).val()==result[k])
{
//Not sure how to hide disable checkbox GridView1.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = true;
}
});
break;
}
这还不行。需要任何帮助
答案 0 :(得分:1)
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField HeaderText="user_name" SortExpression="user_name">
<ItemTemplate>
<input id="CheckBox1" runat="server" type="checkbox"
class="cbName" cbid='<%# Eval("user_id") %>' />
<label id="Label1" runat="server" for="CheckBox1" >
<asp:Literal ID="Literal1" runat="server" Text='<%# Bind("user_name") %>'></asp:Literal>
</label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ListBox ID="ListBox1" runat="server"
ClientIDMode="Static" SelectionMode="Multiple" Rows="10"
DataSourceID="SqlDataSource1"
DataTextField="user_name" DataValueField="user_id" >
</asp:ListBox>
<script type="text/javascript">
$(function () {
$("#ListBox1").on("change", function () {
$("#ListBox1 option").each(function (i,e) {
var s = "input.cbName[cbid='" + $(this).val() + "']";
$(s).prop("disabled", e.selected);
});
});
});
</script>
jquery正在监视ListBox以进行选择更改。
每次选择一个列表项时,我都会循环遍历一组列表项并构建一个类似于此的jquery选择器。
input.cbName[cbid=XXX]
其中XXX是某个索引值
cbName
是Gridview的唯一cbid
对于GridView上的每个名称都是唯一的,并与ListItem value
属性配对这将查找并执行gridview中与其关联的列表项配对的每个项目。这样做是为了避免由于ASP服务器控件附带的名称错位而导致与查找gridview项相关的问题。
以下代码段显示了一个带有工作jquery
的渲染GridView和Listbox的示例
$(function() {
$("#ListBox1 option").on("click", function() {
$("#ListBox1 option").each(function(i, e) {
var s = "input.cbName[cbid='" + $(this).val() + "']";
$(s).prop("disabled", e.selected);
});
});
});
&#13;
#gv,#lb {
display: inline-block;
width:200px;
vertical-align: top;
}
input.cbName[disabled],
input.cbName[disabled] + label{
cursor:not-allowed;
color: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="gv">
<div>
<table cellspacing="0" rules="all" border="1" id="GridView1" style="border-collapse:collapse;">
<tbody>
<tr>
<th scope="col">user_name</th>
</tr>
<tr>
<td>
<input name="GridView1$ctl02$CheckBox1" type="checkbox" id="GridView1_CheckBox1_0" class="cbName" cbid="3032">
<label id="GridView1_cblbl_0" for="CheckBox1">ALEXIS</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl03$CheckBox1" type="checkbox" id="GridView1_CheckBox1_1" class="cbName" cbid="1995">
<label id="GridView1_cblbl_1" for="CheckBox1">ALI</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl04$CheckBox1" type="checkbox" id="GridView1_CheckBox1_2" class="cbName" cbid="2311">
<label id="GridView1_cblbl_2" for="CheckBox1">ALMAZAR</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl05$CheckBox1" type="checkbox" id="GridView1_CheckBox1_3" class="cbName" cbid="1884">
<label id="GridView1_cblbl_3" for="CheckBox1">ALTSHULER</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl06$CheckBox1" type="checkbox" id="GridView1_CheckBox1_4" class="cbName" cbid="3267">
<label id="GridView1_cblbl_4" for="CheckBox1">ALTSHULER</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl07$CheckBox1" type="checkbox" id="GridView1_CheckBox1_5" class="cbName" cbid="1742">
<label id="GridView1_cblbl_5" for="CheckBox1">ANTHONY</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl08$CheckBox1" type="checkbox" id="GridView1_CheckBox1_6" class="cbName" cbid="1697">
<label id="GridView1_cblbl_6" for="CheckBox1">ANTHONY</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl09$CheckBox1" type="checkbox" id="GridView1_CheckBox1_7" class="cbName" cbid="2003">
<label id="GridView1_cblbl_7" for="CheckBox1">BAEZ</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl10$CheckBox1" type="checkbox" id="GridView1_CheckBox1_8" class="cbName" cbid="2569">
<label id="GridView1_cblbl_8" for="CheckBox1">BALDWIN</label>
</td>
</tr>
<tr>
<td>
<input name="GridView1$ctl11$CheckBox1" type="checkbox" id="GridView1_CheckBox1_9" class="cbName" cbid="1863">
<label id="GridView1_cblbl_9" for="CheckBox1">BRENNAN</label>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="lb">
<select size="10" name="ListBox1" multiple="multiple" id="ListBox1">
<option value="3032">ALEXIS</option>
<option value="1995">ALI</option>
<option value="2311">ALMAZAR</option>
<option value="1884">ALTSHULER</option>
<option value="3267">ALTSHULER</option>
<option value="1742">ANTHONY</option>
<option value="1697">ANTHONY</option>
<option value="2003">BAEZ</option>
<option value="2569">BALDWIN</option>
<option value="1863">BRENNAN</option>
</select>
</div>
&#13;