无法设置 ListView 项的值
Cannot set value of ListView Item
我在设置嵌套列表视图(lsitview 中的列表视图)内的文本框的值时遇到问题。我想做的是提取两个文本框的值(工作正常),将它们相乘,然后将该值设置为第三个文本框(我遇到问题的地方)。
这是我的列表视图设置:
<asp:ListView ID="LV_Tickets" runat="server" ClientIDMode="Static" DataSourceID="SQL_Tickets" InsertItemPosition="FirstItem" OnPreRender="LV_Tickets_PreRender" DataKeyNames="TicketNum">
<SelectedItemTemplate>
<asp:ListView ID="LV_TicketProd" runat="server" DataKeyNames="ChargeID" DataSourceID="SQL_TicketProducts" InsertItemPosition="LastItem" OnPreRender="LV_TicketProd_PreRender" OnItemInserted="LV_TicketProd_ItemInserted" OnItemInserting="LV_TicketProd_ItemInserting" OnItemUpdated="LV_TicketProd_ItemUpdated" OnItemUpdating="LV_TicketProd_ItemUpdating">
<InsertItemTemplate>
<td>
<asp:TextBox ID="HoursOrCubesTextBox" runat="server" style="height: 20px; width: 165px;" Text='<%# Bind("HoursOrCubes") %>' OnTextChanged="HoursOrCubes_TextChanged" AutoPostBack="true" />
</td>
<td>
<asp:TextBox ID="RateTextBox" runat="server" style="height: 20px; width: 120px;" Text='<%# Bind("Rate") %>' OnTextChanged="Rate_TextChanged" AutoPostBack="true" />
</td>
<td>
<asp:TextBox ID="LineTotalTextBox" runat="server" style="height: 20px; width: 120px;" Text='<%# Bind("LineTotal") %>' />
</td>
</ InsertItemTemplate>
</ SelectedItemTemplate>
我从 HoursOrCubesTextBox
和 RateTextBox
获取值的当前方式是:
protected void HoursOrCubesTextBox_TextChanged(object sender, EventArgs e)
{
ListView LV_TicketProd = (ListView)Session["TicketProd"];
TextBox HoursOrCubesTextBox = (TextBox)(LV_TicketProd.InsertItem.FindControl("HoursOrCubesTextBox"));
string HoC = HoursOrCubesTextBox.Text //This here is getting the value from the textbox.
}
但是当我尝试做相反的事情来设置文本框的值时,没有任何反应:
TextBox LineTotalTextBox = (TextBox)(LV_TicketProd.InsertItem.FindControl("LineTotalTextBox"));
LineTotalTextBox.Text = FinalValue; //FinalValue is the two values multiplied together.
我检查了来自文本框的值是否正确,并且当我将它们相乘时我得到一个整数值。所以我不完全确定为什么我不能设置 LineTotalTextBox 的值。任何帮助将不胜感激。
不要尝试读取和写入项目模板。那是 ListView
的工作。
读写ListView绑定的数据源
如果我的意思是,我会展示示例,但我无法理解您的代码....您是从 SQL 数据库还是从用户输入填充 ListView?
我想出了解决这个问题的方法。我所做的是将HoursOrCubes
和Rate
这两个文本框设置为autopostback,然后在onload函数中对文本框进行乘法和设置。
我在设置嵌套列表视图(lsitview 中的列表视图)内的文本框的值时遇到问题。我想做的是提取两个文本框的值(工作正常),将它们相乘,然后将该值设置为第三个文本框(我遇到问题的地方)。
这是我的列表视图设置:
<asp:ListView ID="LV_Tickets" runat="server" ClientIDMode="Static" DataSourceID="SQL_Tickets" InsertItemPosition="FirstItem" OnPreRender="LV_Tickets_PreRender" DataKeyNames="TicketNum">
<SelectedItemTemplate>
<asp:ListView ID="LV_TicketProd" runat="server" DataKeyNames="ChargeID" DataSourceID="SQL_TicketProducts" InsertItemPosition="LastItem" OnPreRender="LV_TicketProd_PreRender" OnItemInserted="LV_TicketProd_ItemInserted" OnItemInserting="LV_TicketProd_ItemInserting" OnItemUpdated="LV_TicketProd_ItemUpdated" OnItemUpdating="LV_TicketProd_ItemUpdating">
<InsertItemTemplate>
<td>
<asp:TextBox ID="HoursOrCubesTextBox" runat="server" style="height: 20px; width: 165px;" Text='<%# Bind("HoursOrCubes") %>' OnTextChanged="HoursOrCubes_TextChanged" AutoPostBack="true" />
</td>
<td>
<asp:TextBox ID="RateTextBox" runat="server" style="height: 20px; width: 120px;" Text='<%# Bind("Rate") %>' OnTextChanged="Rate_TextChanged" AutoPostBack="true" />
</td>
<td>
<asp:TextBox ID="LineTotalTextBox" runat="server" style="height: 20px; width: 120px;" Text='<%# Bind("LineTotal") %>' />
</td>
</ InsertItemTemplate>
</ SelectedItemTemplate>
我从 HoursOrCubesTextBox
和 RateTextBox
获取值的当前方式是:
protected void HoursOrCubesTextBox_TextChanged(object sender, EventArgs e)
{
ListView LV_TicketProd = (ListView)Session["TicketProd"];
TextBox HoursOrCubesTextBox = (TextBox)(LV_TicketProd.InsertItem.FindControl("HoursOrCubesTextBox"));
string HoC = HoursOrCubesTextBox.Text //This here is getting the value from the textbox.
}
但是当我尝试做相反的事情来设置文本框的值时,没有任何反应:
TextBox LineTotalTextBox = (TextBox)(LV_TicketProd.InsertItem.FindControl("LineTotalTextBox"));
LineTotalTextBox.Text = FinalValue; //FinalValue is the two values multiplied together.
我检查了来自文本框的值是否正确,并且当我将它们相乘时我得到一个整数值。所以我不完全确定为什么我不能设置 LineTotalTextBox 的值。任何帮助将不胜感激。
不要尝试读取和写入项目模板。那是 ListView
的工作。
读写ListView绑定的数据源
如果我的意思是,我会展示示例,但我无法理解您的代码....您是从 SQL 数据库还是从用户输入填充 ListView?
我想出了解决这个问题的方法。我所做的是将HoursOrCubes
和Rate
这两个文本框设置为autopostback,然后在onload函数中对文本框进行乘法和设置。