我的gridview中有textbox列。我想在某些条件下禁用我的文本框,即 当在texbox中输入的值为2000时,“2000/500 = 4”文本框将在其他行上禁用,它应该是某个值的倍数。
我不知道应该在gridview
中触发哪个事件或使用javascript
来处理textboxchange event
。
这是我的网格视图代码.aspx
<asp:TemplateField HeaderText="Installment No.">
<ItemTemplate>
<asp:Label ID="LblInstl" runat="server" Text='<%#Eval("InstallmentNo") %>' Font-Bold="True"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Due Date">
<ItemTemplate>
<asp:Label ID="LbldueDate" runat="server" Text='<%#Eval("DueDate") %>' Font-Bold="True" ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Deposit Date">
<ItemTemplate>
<asp:TextBox runat="server" Text='<%#Eval("Datedeposit") %>' Enabled='<%# (string) Eval("Datedeposit") == "" %>' ID="TxtdepositDate" Width="200px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Amount">
<ItemTemplate>
<asp:TextBox ID="TxtAmount" runat="server" Text='<%#Eval("Amount") %>' Enabled='<%# (string) Eval("Amount") == "" %>' Width="200px"></asp:TextBox>
<asp:HiddenField runat="server" ID="Hdn" Value='<%#Eval("InstallmentAmount") %>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
如果用户在Textamount中输入的金额大于500,那么我想要禁用gridview行的下一个3文本框。
答案 0 :(得分:0)
这分为两部分。
第1部分 在运行时
您应该查看RowDataBound
事件:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound(v=vs.100).aspx
所以GridView的声明是
<asp:GridView id="grd" runat="server" OnRowDataBound="grd_RowDataBound">
然后在代码隐藏中,您可以检查e
的条件,如上例所示:
protected void grd_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
// Display the company name in italics.
if(int.Parse(((TextBox)e.Row.Cells[2].FindCOntrol("TxtdepositDate")).Text) > 500)
{
(((TextBox)e.Row.Cells[2].FindCOntrol("TxtAmount")).Enabled = false;
}
}
}
第2部分 客户端
然后,当客户端输入文本时,我会使用jQuery来禁用文本框:
首先,在文本框中添加一个类:
<asp:TextBox runat="server" Text='<%#Eval("Datedeposit") %>' Enabled='<%# (string) Eval("Datedeposit") == "" %>' ID="TxtdepositDate" Width="200px" CssClass="watchedAmt"></asp:TextBox>
另一个文本框:
'已启用='&lt;%#(字符串)Eval(“金额”)==“”%&gt;'宽度=“200px”CssClass =“targetTxt”&gt;
然后,jQuery可以更容易地关注这些文本框:
$(".watchedAmt").change(function() {
if(parseInt($(this).val()) > 500) {
$(this).parent().next().child(".targetTxt").attr("disabled", "disabled");
} else {
$(this).parent().next().child(".targetTxt").removeAttr("disabled");
};
});
jQuery中的定位可能有些偏差,因为您需要根据网格布局进行定位,但它应该让您接近。
试一试。