命令参数文本框:名称"X"在当前上下文中不存在
本文关键字:quot 上下文 不存在 名称 文本 命令 参数 | 更新日期: 2023-09-27 18:14:36
我得到这个消息:名称"PINTextBox"在当前上下文中不存在。
. .当我使用这个代码
protected void SqlDataSource9_Selecting(object sender,
SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@PIN"].Value = PINTextBox;
}
当我使用值3时,代码工作,但我希望文本框值传递到@PIN参数,而不仅仅是3
protected void SqlDataSource9_Selecting(object sender,
SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@PIN"].Value = 3;
}
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1"
DataKeyNames="ID" GroupItemCount="2">
...
<EditItemTemplate>
...
<asp:TextBox ID="PINTextBox" runat="server" Text='<%# Bind("PIN") %>'/>
...
</EditItemTemplate>
...
</asp:ListView>
它给我这个消息,因为文本框列在SqlDataSource1,而不是SqlDataSource9?
如果是这样,我是否有办法绕过这个仍然使用两个不同的数据源?或者我如何将PINTextBox中的数据传递给我的命令并进入我的选择语句(未列出,因为当我在命令中具有值3时它似乎可以工作)?
谢谢,如果你需要更多的代码请告诉我。
你需要知道我们谈论的是哪一行的TextBox
//myRow contains the row that was just selected
TextBox txtPin = (TextBox)myRow.FindControl ("PINTextBox");
e.Command.Parameters["@PIN"].Value = txtPin.Text;
您可以使用listview的selecteindex找到标签/文本框,然后提取文本,如下所示。(不确定为什么要使用文本框,但可以使用标签;文本框代码被注释)。您可以将下面的"PINLabel"替换为ItemTemplate中标签的实际ID。该代码将在您第一次加载页面时调用,因此您可能需要注意为回发设置条件。
protected void SqlDataSource9_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
//TextBox txtPIN = ListView1.Items[ListView1.SelectedIndex].FindControl("PINTextBox") as TextBox;
//e.Command.Parameters["@PIN"].Value = txtPIN.Text;
Label lblPIN = ListView1.Items[ListView1.SelectedIndex].FindControl("PINLabel") as Label;
e.Command.Parameters["@PIN"].Value = lblPIN.Text;
}
您需要确保这个控件也出现在SelectedItemTemplate中,如下所示:
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1"
DataKeyNames="ID">
......
<EditItemTemplate>
<tr>
......
<td><asp:TextBox ID="PINTextBox" runat="server" Text='<%# Bind("PIN") %>' /></td>
</tr>
</EditItemTemplate>
......
<ItemTemplate>
<tr>
......
<td><asp:Label ID="PINLabel" runat="server" Text='<%# Eval("PIN") %>' /></td>
......
</tr>
</ItemTemplate>
......
<SelectedItemTemplate>
<tr>
......
<td><asp:Label ID="PINLabel" runat="server" Text='<%# Eval("PIN") %>' /></td>
......
</tr>
</SelectedItemTemplate>
</asp:ListView>
旧答案(IGNORE):
使用"。文本"为PINTextBox!sqldatasource9_selection(对象发送者)SqlDataSourceCommandEventArgs e){e.Command.Parameters("@PIN")。Value = PINTextBox.Text;}