一尘不染

在更改服务器端值/文本之后,从文本框中获取文本/值

c#

我有一个FormViewwith data(DataSourceDataBind),我用填充 value='<%# Eval("Name") %>',但是在更改文本TextBox并按“更新”按钮后,我看到的值与以前相同,但看不到键入的新值。

我在这里想念的是什么?

我的HTML

<asp:FormView ID="MainFormTemplate" runat="server">  
    <ItemTemplate>
        <li class="li_result" runat="server">
            <div class="col-3">
                <input id="txt_Name"   runat="server"   value='<%# Eval("Name") %>'>
            </div>
        </li>
    </ItemTemplate>
</asp:FormView>
<asp:Button id="btn_Update" runat="server" OnClick="btn_Update_Click" Text="Update" />

服务器端

protected void Page_Load(object sender, EventArgs e)
{
    using (DB_MikaDataContext data = new DB_MikaDataContext())
    { 
        MainFormTemplate.DataSource = data.File_Projects.Where(x => x.Num_Tik.Equals("12")).ToList();
        MainFormTemplate.DataBind();             
    }        
}


public void btn_Update_Click(object sender, EventArgs e)
{      
    //using System.Web.UI.HtmlControls
    HtmlInputText twt = (HtmlInputText)MainFormTemplate.FindControl("txt_Name");
    string text = twt.Value;//i see old value ,not new one that i typed in text box    
}

阅读 320

收藏
2020-05-19

共1个答案

一尘不染

在每一个中postback,您总是从数据库中获取旧值。解决方案是检查页面是否是首次呈现( !IsPostBack
),然后在响应回发()进行加载时设置您MainFormTemplate的,DataSource否则将 IsPostBack
获得txt_Name的值,如下所示:

HtmlInputText twt;

protected void Page_Load(object sender, EventArgs e)
{
      if (!IsPostBack)
      {
           using (DB_MikaDataContext data = new DB_MikaDataContext())
           { 
                MainFormTemplate.DataSource = data.File_Projects.Where(x => x.Num_Tik.Equals("12")).ToList();
                MainFormTemplate.DataBind();
           }
      }
      else 
      {
           twt = MainFormTemplate.FindControl("txt_Name") as HtmlInputText;
      }           
}

protected void btn_Update_OnClick(object sender, EventArgs e)
{
     string text = twt.Value; // You will get the new value
}
2020-05-19