<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" EnableModelValidation="True"
OnRowCommand="GridView1_RowCommand"
OnRowDataBound="GridView1_RowDataBound"
>
<Columns>
<asp:TemplateField HeaderText="类型">
<ItemTemplate>
<asp:DropDownList ID="TravelType" runat="server" Width="100px" OnSelectedIndexChanged="TravelType_SelectedIndexChanged" >
<asp:ListItem Value="0">A</asp:ListItem>
<asp:ListItem Value="1">B</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="起点">
<ItemTemplate>
<asp:TextBox ID="start" runat="server" Text='<%# Eval("起点") %>' ></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="终点">
<ItemTemplate>
<asp:TextBox ID="end" runat="server" Text='<%# Eval("终点") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<RowStyle Height="40px" />
<HeaderStyle Height="40px" />
<FooterStyle Height="40px" />
</asp:GridView>
例如这样的一个gridview 当我选择某一行的类型列dropdownlist的时候 我希望根据选择的值不同,例如选择了A让同一行的起点列内的textbox禁用,选择B让同一行的终点列内的textbox禁用,这样请问该如何实现,前端或后台的实现都可以。
在后台可以在GridView1_RowDataBound方法内根据dropdownlist选中值的不同做更改其他列的操作,可是dropdownlist的postback不会触发该方法。
前台我试过循环绑定,不过好像添加不了onchange事件,或者哪里写错了。希望各位大大指点下。
10 个解决方案
#1
里面的下拉选择禁用,同一行的按钮就禁用么?
这个意思?
#2
用JS写啊,很简单的!不懂问我!
#3
意思就是下拉选择某个值 同一行的其他列根据这个值的不同做不同的操作 例如下拉选择A 起点和终点内的textbox禁用
回楼上 JS该怎么写 我写了不行
回楼上 JS该怎么写 我写了不行
#4
$("#TravelType").change(function(){
//获取选中值
//禁用对应的textbox
});
#5
回楼上的 里面禁用对应的textbox该怎么写呢 写 $("#start") $("#end")应该是不行的对吧 怎么能找出对应这一行的 #start与#end呢。感谢。。
#6
$("#GridView1 select").change(function () {
$(this).parent().next().find("input")[0].value = this.value;
$(this).parent().next().next().find("input")[0].value = this.options[this.selectedIndex].text;
});
这个例子是赋值,当然你也可以修改属性。
#7
$("#TravelType").change(function(){alert("a")});
刚试了下 这样写好像绑定不到onchange事件 alert不到东西 用F12查看也没有onchange属性
刚试了下 这样写好像绑定不到onchange事件 alert不到东西 用F12查看也没有onchange属性
#8
换个事件,after
#9
前台先加:
<asp:DropDownList ID="TravelType" runat="server" Width="100px" OnSelectedIndexChanged="TravelType_SelectedIndexChanged" AutoPostBack="True" >
后台:
<asp:DropDownList ID="TravelType" runat="server" Width="100px" OnSelectedIndexChanged="TravelType_SelectedIndexChanged" AutoPostBack="True" >
后台:
protected void TravelType_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
StringBuilder query = new StringBuilder();
GridViewRow row = GridView1.Rows[i];
TextBox empRealName = ((TextBox)row.Cells[0].FindControl("start"));
if (((DropDownList)row.Cells[0].FindControl("TravelType")).SelectedValue == "A")
{
empRealName.Enabled = false;
}
}
}
#10
感谢您 这个方法有效
#1
里面的下拉选择禁用,同一行的按钮就禁用么?
这个意思?
#2
用JS写啊,很简单的!不懂问我!
#3
意思就是下拉选择某个值 同一行的其他列根据这个值的不同做不同的操作 例如下拉选择A 起点和终点内的textbox禁用
回楼上 JS该怎么写 我写了不行
回楼上 JS该怎么写 我写了不行
#4
$("#TravelType").change(function(){
//获取选中值
//禁用对应的textbox
});
#5
回楼上的 里面禁用对应的textbox该怎么写呢 写 $("#start") $("#end")应该是不行的对吧 怎么能找出对应这一行的 #start与#end呢。感谢。。
#6
$("#GridView1 select").change(function () {
$(this).parent().next().find("input")[0].value = this.value;
$(this).parent().next().next().find("input")[0].value = this.options[this.selectedIndex].text;
});
这个例子是赋值,当然你也可以修改属性。
#7
$("#TravelType").change(function(){alert("a")});
刚试了下 这样写好像绑定不到onchange事件 alert不到东西 用F12查看也没有onchange属性
刚试了下 这样写好像绑定不到onchange事件 alert不到东西 用F12查看也没有onchange属性
#8
换个事件,after
#9
前台先加:
<asp:DropDownList ID="TravelType" runat="server" Width="100px" OnSelectedIndexChanged="TravelType_SelectedIndexChanged" AutoPostBack="True" >
后台:
<asp:DropDownList ID="TravelType" runat="server" Width="100px" OnSelectedIndexChanged="TravelType_SelectedIndexChanged" AutoPostBack="True" >
后台:
protected void TravelType_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
StringBuilder query = new StringBuilder();
GridViewRow row = GridView1.Rows[i];
TextBox empRealName = ((TextBox)row.Cells[0].FindControl("start"));
if (((DropDownList)row.Cells[0].FindControl("TravelType")).SelectedValue == "A")
{
empRealName.Enabled = false;
}
}
}
#10
感谢您 这个方法有效