在回发更新面板后保留值

时间:2014-06-10 13:31:56

标签: c# asp.net

我有一个位于更新面板内的文本框 - > DetailsView控件。当我单击插入时,我基本上调用一个方法来更新DB。现在,我尝试将文本框中输入的值保存在文本框中,这样我就不会丢失它。

我很想设置文本框值,并插入值。

我的aspx:

<asp:UpdatePanel runat="server" ID="insert" UpdateMode="Conditional">
  <ContentTemplate>
    <table>
      <tr>
        <Fields>
          <td class="style1">
            <asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="500px" AutoGenerateRows="False"
                             DataKeyNames="strPositionId,nFolderId,tmVaRPosition" DataSourceID="ODSManualPosVaR"
                             OnItemInserted="DetailsView1_ItemInserted" OnItemInserting="DetailsView1_ItemInserting"
                             DefaultMode="Insert" SkinID="detailsviewSkin" EnableModelValidation="True">
              <asp:TemplateField HeaderText="Name" SortExpression="strPositionName">
                <InsertItemTemplate>
                  <asp:TextBox ID="strPositionName" Width="380px" MaxLength="49" runat="server" Text='<%# Bind("strPositionName") %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                  <asp:Label ID="Label1" runat="server" Width="380px" Text='<%# Bind("strPositionName") %>'></asp:Label>
                </ItemTemplate>
              </asp:TemplateField>
            </asp:DetailsView>
          </td>
        </Fields>
      </tr>
    </table>
  </ContentTemplate>
</asp:UpdatePanel>

我的Page_Load:

protected new void Page_Load(object sender, EventArgs e)
{
    base.Page_Load(sender, e);
    strSystemId = Request["nSystemId"];

    CheckPermission(strSystemId);

    if (!IsPostBack || !PageHeader1.SystemId.Equals(strSystemId))
    {
        RefreshGrid();
        DetailsView1.DataBind();
    }
}

点击插入时:

protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
    UpdateDB();
    //Trying to store the textbox value in a session variable
    Session["Test"] = ((TextBox)DetailsView1.FindControl("strPositionName")).Text;
    KeepValues();
}

KeepValues:

private void KeepValues()
{
    var txtName = (TextBox)DetailsView1.FindControl("strPositionName");
    var name = Session["Test"].ToString();
    txtName.Text = name;
}

当我调试它时,它停在KeepValues并且Session变量正常工作。但我仍然无法将textbox.text设置为它。

为什么这不起作用?是因为回发吗?我想要的是将strPositionName中的值存储在变量(工作)中,然后设置为textbox.text

0 个答案:

没有答案