C# 如果文本属性已设置为绑定,如何在插入模式下预填充formview文本框?

C# 如果文本属性已设置为绑定,如何在插入模式下预填充formview文本框?,c#,C#,我有一个formview控件,用于将数据上载到连接的gridview控制器。在gridview的顶部,我使用asp:linkbutton将formview设置为插入模式 FormView1.ChangeMode(FormViewMode.Insert); 这是我在formview的插入模板中的文本框: <asp:TextBox ID="Date_Position_AvailableTextBox" runat="server" Text='<%# Bind("Dat

我有一个formview控件,用于将数据上载到连接的gridview控制器。在gridview的顶部,我使用asp:linkbutton将formview设置为插入模式

    FormView1.ChangeMode(FormViewMode.Insert);
这是我在formview的插入模板中的文本框:

    <asp:TextBox ID="Date_Position_AvailableTextBox" runat="server" Text='<%# Bind("Date_Position_Available") %>' />
最后是我的FillDefaultVaueInFormView();功能

    public void FillDefaultVaueInFormView()
    {

        if (FormView1.CurrentMode == FormViewMode.Insert)
        {

            TextBox txtPositionAvailable = FormView1.FindControl("Date_Position_AvailableTextBox") as TextBox;
            if (txtPositionAvailable != null)
            {
                txtPositionAvailable.Text = DateTime.Now.ToShortDateString();
            }
        }
    } 

当我进入插入模式时,该字段为空。我做错了什么

您需要在将FormView设置为插入模式后立即移动
FillDefaultValueInFormView()
。当您尝试在表单加载时填充字段时,文本框不存在(当您不处于插入或编辑模式时,“文本框”实际上是标签)。这会导致您的
if
语句返回false,因此没有填充值。

您是说要将
FillDefaultValueInFormView()
添加到Linkbutton的Click命令中。当我这样做时,我在项目中仍然会得到空白值,我还将其放入
FormView\u DataBound
方法中。您可以像这样将命令包装在if块中
if(FormView.CurrentMode==FormViewMode.Insert)
,以确保只有在将其设置为插入模式后才会触发命令。您可能希望在if处或内部设置断点,以确保进程正在运行。将代码放在您认为正在运行的某个地方,但随后发现事件从未触发,这并不少见。我之前尝试过,但它不起作用…但现在起作用了…谢谢大家!我没有找到任何关于FillDefaultValueInFormView()用法的文档。我正在处理一个与这里发布的问题类似的问题,如果我能看到使用它的语法,这听起来会很有效。
    public void FillDefaultVaueInFormView()
    {

        if (FormView1.CurrentMode == FormViewMode.Insert)
        {

            TextBox txtPositionAvailable = FormView1.FindControl("Date_Position_AvailableTextBox") as TextBox;
            if (txtPositionAvailable != null)
            {
                txtPositionAvailable.Text = DateTime.Now.ToShortDateString();
            }
        }
    }