【问题标题】:How to get value from DetailsView Control in ASP.NET?如何从 ASP.NET 中的 DetailsView 控件中获取价值?
【发布时间】:2013-09-07 23:26:44
【问题描述】:

我的页面上有 DetailsView。我设置了DefaultMode="Edit"。现在我想获取用户将在此单元格中编辑的值。

<asp:DetailsView ID="dvApplicantDetails" runat="server" 
            AutoGenerateRows="false" DataKeyNames="ApplicantID" DefaultMode="Edit" 
            onitemcommand="dvApplicantDetails_ItemCommand" >
        <Fields>
            <asp:BoundField DataField="ApplicantID" HeaderText="ApplicantID" ReadOnly="true"/>
            <asp:BoundField DataField="FirstName" HeaderText="First Name" />
            <asp:BoundField DataField="LastName" HeaderText="Last Name" />

            <asp:CommandField ButtonType="Button" ShowEditButton="true" EditText="Update" ShowCancelButton="false" />
        </Fields>
        </asp:DetailsView>

我尝试了很多方法来获取这个值,例如:

protected void dvApplicantDetails_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
    if (e.CommandName == "Update")
    {
        string firstName = dvApplicantDetails.Rows[1].Cells[1].Text;
        string lastName = dvApplicantDetails.Rows[2].Cells[1].Text;
    }
}

但它不起作用...如何使用此模式获取此值。我知道我可以使用&lt;ItemTemplate&gt; 而不是&lt;BoundField&gt;,但无论如何它应该是从这个字段中获取这个值的某种方式。 请帮忙! 谢谢!

【问题讨论】:

    标签: c# asp.net detailsview


    【解决方案1】:

    很遗憾,尝试访问..Cells[1]Text 不是您要查找的内容。您需要该单元格中 TextBox 控件的值:

    protected void dvApplicantDetails_ItemCommand(object sender, DetailsViewCommandEventArgs e)
    {
        if (e.CommandName == "Update")
        {
            string firstName = ((TextBox)dvApplicantDetails.Rows[1].Cells[1].Controls[0]).Text;
            string lastName = ((TextBox)dvApplicantDetails.Rows[2].Cells[1].Controls[0]).Text
        }
    }
    

    【讨论】:

    • 非常感谢!这正是我需要的!工作就像一种魅力!
    • 非常感谢.. 你救了我!不确定,为什么 MS 在提供编辑和插入模式时必须让这变得如此困难!它应该/本来可以简单得多
    【解决方案2】:

    布吕克,

    尝试使用 OnItemUpdating 事件。你可以得到如下所示的新值:

    protected void dvApplicantDetails_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        var dv = sender as DetailsView;
    
        var firstName = e.NewValues[1].ToString();
        var lastName = e.NewValues[2].ToString();
    }
    

    在 aspx 中为 DetailsView 控件添加 OnItemUpdating="dvApplicantDetails_ItemUpdating" 属性。

    【讨论】:

      【解决方案3】:

      我今天早些时候需要这样做...1up 为帮助我的问题和答案。这是我想出的一个函数。

      protected void Page_Load(object sender, EventArgs e)
      {
          string sFirstName = GetDVRowValue(dvApplicantDetails, "ApplicantID")
      }
      
      public string GetDVRowValue(DetailsView dv, string sField)
      {
          string sRetVal = string.Empty;
          foreach (DetailsViewRow dvr in dv.Rows)
          {
             if (dvr.Cells[0].Text == sField)
                 sRetVal = dvr.Cells[1].Text;
          }
          return sRetVal;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-14
        • 2012-10-03
        • 2013-12-21
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多