C# 访问详细信息视图中的文本框
有人知道如何在DetailsView字段(c#)中设置文本框的文本吗 我尝试了一些变体,但都返回了上下文外和对象引用未设置错误 这是我的密码 ASPX:C# 访问详细信息视图中的文本框,c#,asp.net,textbox,detailsview,C#,Asp.net,Textbox,Detailsview,有人知道如何在DetailsView字段(c#)中设置文本框的文本吗 我尝试了一些变体,但都返回了上下文外和对象引用未设置错误 这是我的密码 ASPX: 干杯该错误可能意味着您的详细信息视图中还没有任何内容。我敢打赌,如果你把这个放在你的代码中: TextBox txt = (TextBox)DetailsView1.FindControl("TextBox1"); if (txt != null) { txt.Text = "Text "; } 您将看到txt实际上是null——这是
干杯该错误可能意味着您的
详细信息视图中还没有任何内容。我敢打赌,如果你把这个放在你的代码中:
TextBox txt = (TextBox)DetailsView1.FindControl("TextBox1");
if (txt != null)
{
txt.Text = "Text ";
}
您将看到txt
实际上是null
——这是因为FindControl
方法在DetailsView
中没有找到任何名为“TextBox1”的内容
您需要将此代码移动到您知道已填充详细视图的位置(如果它绑定到数据源
,您可以在详细视图
的数据绑定
事件中执行此操作)
另外,我注意到您的文本框
位于插入项模板
中。在将DetailsView
置于编辑模式之前,您不会找到TextBox1
,默认情况下:
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px"
DefaultMode="Insert">
希望这会有所帮助。这个错误可能意味着您的详细视图中还没有任何内容。我敢打赌,如果你把这个放在你的代码中:
TextBox txt = (TextBox)DetailsView1.FindControl("TextBox1");
if (txt != null)
{
txt.Text = "Text ";
}
您将看到txt
实际上是null
——这是因为FindControl
方法在DetailsView
中没有找到任何名为“TextBox1”的内容
您需要将此代码移动到您知道已填充详细视图的位置(如果它绑定到数据源
,您可以在详细视图
的数据绑定
事件中执行此操作)
另外,我注意到您的文本框
位于插入项模板
中。在将DetailsView
置于编辑模式之前,您不会找到TextBox1
,默认情况下:
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px"
DefaultMode="Insert">
希望这能有所帮助。@jadarnel27感谢您提供有关将代码放入数据绑定事件的信息。我遇到过类似的问题,文本框值只会通过按钮单击事件传递到DetailsView字段(DefaultMode=Insert)。我不想要/不需要按钮
我的场景:代码标识是否需要detailsview(用于插入)。如果根据从下拉控件中选择的人员记录不存在,则他们的人员ID将预加载到detailsview的人员字段中
使用FindControl不起作用,但在放入数据绑定控件时使用以下代码起作用
// Get person selected from dropdown control and pass to DetailsView first row/cell
txtPerson.Text = Convert.ToString(ddlPersonSelect.SelectedValue);
TextBox tb = (TextBox)DetailsView1.Rows[0].Cells[1].Controls[0];
if (tb != null)
{
tb.Text = txtPerson.Text;
}
我希望这能帮助像我这样的新手 @jadarnel27感谢您提供有关将代码放入数据绑定事件的信息。我遇到过类似的问题,文本框值只会通过按钮单击事件传递到DetailsView字段(DefaultMode=Insert)。我不想要/不需要按钮
我的场景:代码标识是否需要detailsview(用于插入)。如果根据从下拉控件中选择的人员记录不存在,则他们的人员ID将预加载到detailsview的人员字段中
使用FindControl不起作用,但在放入数据绑定控件时使用以下代码起作用
// Get person selected from dropdown control and pass to DetailsView first row/cell
txtPerson.Text = Convert.ToString(ddlPersonSelect.SelectedValue);
TextBox tb = (TextBox)DetailsView1.Rows[0].Cells[1].Controls[0];
if (tb != null)
{
tb.Text = txtPerson.Text;
}
我希望这能帮助像我这样的新手 您在代码背后的什么时候这样做?在尝试访问文本框
之前,是否已检查以确保详细信息视图中有任何内容?因为您显示的代码在我看来还可以。您好,它在Page_Load()中,是的,视图中有数据,仔细检查我也尝试过通过行引用,还检查了是否没有动态创建的ID将事情弄得一团糟,我想您使用Findcontrol
方法是正确的,我只是觉得你的详细视图中没有任何内容。在txt.Text=“Text”前面加一个if(txt!=null)
代码>行,我打赌你会看到它实际上是空的。你在你的代码后面的什么地方这样做?在尝试访问文本框
之前,是否已检查以确保详细信息视图中有任何内容?因为您显示的代码在我看来还可以。您好,它在Page_Load()中,是的,视图中有数据,仔细检查我也尝试过通过行引用,还检查了是否没有动态创建的ID将事情弄得一团糟,我想您使用Findcontrol
方法是正确的,我只是觉得你的详细视图中没有任何内容。在txt.Text=“Text”前面加一个if(txt!=null)
代码>行,我打赌你会看到它实际上是空的。您好,在DetailsView中肯定有数据。我也尝试在其中添加一个普通的html文本框,并尝试找到该控件。没有错误,但仍不使用任何数据填充框。Strange@Developr当前位置我用我刚刚想到的另一个可能的问题编辑了我的答案。让我知道这是否对你有帮助(嗨,贾达尔内尔27-不幸的是没有运气。我已经在确保我处于正确的模式。html控件是否在加载之前创建?这几乎就像我在On_Load中的操作试图填充不存在的控件一样yet@Developr:要回答这个问题,我需要知道是什么填充了您的详细视图
(即,将其绑定到SQLDataSource
,等等)。你能发布那部分代码吗?我最终确实让它工作了,但只是在附加到它的数据绑定事件中。公平地说,这是一段可怕的代码,我是从别人那里学来的。我想我现在就不谈这个了,因为代码本身太复杂了,不能再浪费时间了——我以后再写,因为我认为整个页面本身太混乱了,这是根本的问题。谢谢你的帮助,你的答案在一个新项目中非常有效:)谢谢jadarnel27Hi,你的详细信息视图中肯定有数据。我也尝试在其中添加一个普通的html文本框,并尝试找到该控件。没有错误,但仍不填充框wi