我有一个gridview,默认情况下所有行都可以编辑。大多数列需要一个简单的文本框,其中包含一些格式化验证器,这不是问题。
但我有1列需要用户可以选择的选项列表。 要做到这一点,我使用Ajax Drop Down Extender绑定到文本框,所以当单击文本框时,它会给他们列表......很简单。
用户从下拉菜单中选择一个选项后出现问题,我似乎无法让文本框用新选择的值更新它的值。
这是gridview列中的ItemTemplate。
<%-- PRIORITY --%>
<asp:TemplateField HeaderText="PRI" SortExpression="PRIORITY">
<ItemTemplate>
<ItemStyle CssClass="ssCellSelected" />
<asp:Panel ID="priorityitems" runat="server" BorderColor="Aqua" BackColor="White" BorderWidth="1">
<asp:ListBox ID="lstPRIORITY" runat="server" SelectedItem='<%# Bind("PRIORITY") %>'>
<asp:ListItem>P1</asp:ListItem>
<asp:ListItem>P2</asp:ListItem>
<asp:ListItem>P3</asp:ListItem>
</asp:ListBox>
</asp:Panel>
<asp:TextBox ID="PRIORITY" runat="server" Width="35px" Text='<%# Eval("PRIORITY") %>' CssClass="ssTextBox"></asp:TextBox>
<cc1:DropDownExtender ID="PRIORITY_DropDownExtender" runat="server"
Enabled="True" DropDownControlID="priorityitems" TargetControlID="PRIORITY">
</cc1:DropDownExtender>
</ItemTemplate>
<ItemStyle CssClass="ssCell" />
</asp:TemplateField>
以下是为每行创建onclick事件的代码。
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
如果e.Row.RowType = DataControlRowType.DataRow那么 Dim lstPRI As ListBox = DirectCast(e.Row.Cells(3).FindControl(“lstPRIORITY”),ListBox) Dim rowIndex As Integer = e.Row.RowIndex Dim columIndex As Integer = 3 '列索引为0 如果lstPRI IsNot Nothing那么 lstPRI.Attributes.Add(“onclick”,“setText(this.options [this.selectedIndex] .value,”&amp; rowIndex.ToString&amp;“,”&amp; columIndex.ToString&amp;“);”) 万一 结束如果
End Sub
我需要使用[this.selectedIndex] .Value并将其应用于ID为PRIORITY的TextBox
我需要以某种方式将其变成动态对手
<script type="text/javascript" language="javascript">
function setText(newValue, row, column) {
document.getElementById("ctl00_pagebody_GridView1_ctl02_PRIORITY").value = newValue;
}
</script>
答案 0 :(得分:0)
我能够使用Dom和Javascript工作。
这里找到了一个很好的教程...... http://www.opensourcetutorials.com/tutorials/Client-Side-Coding/JavaScript/javascript-document-object-model/page1.html
无论如何,我安装了IE DEV TOOLS,这样我就可以查看gridview的HTML并找出文本框的位置......
然后在aspx页面上的脚本函数中..
请注意,我必须选择gridview的第一个子节点,因为在表格内部是一个标签,然后包含整个表格结构。
我还必须在行整数中加1,因为第一行是gridview表的标题
<script type="text/javascript" language="javascript">
function setText(newValue, therow, column) {
var gridView = document.getElementById('<%= GridView1.ClientID %>').childNodes[0];
var row = gridView.childNodes[parseInt(therow) + 1];
var cell = row.cells[column];
cell.childNodes[1].childNodes[0].value = newValue;
}
</script>