C# 访问详细信息视图中的文本框

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——这是

有人知道如何在DetailsView字段(c#)中设置文本框的文本吗

我尝试了一些变体,但都返回了上下文外和对象引用未设置错误

这是我的密码

ASPX:


干杯

该错误可能意味着您的
详细信息视图中还没有任何内容。我敢打赌,如果你把这个放在你的代码中:

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