如何在gridview上的itemtemplate中找到标签?C#ASP.NET

时间:2016-09-29 02:13:20

标签: c# asp.net

我有一个从数据库绑定一些数据的GridView,并且在EditItemTemplate中的ItemTemplate和EditTextbox中有一个标签,它们位于同一个TemplateField中。在GridView中,某些用户在某处字段中没有数据,如果我想为这些用户插入数据,我需要先找到GirdView标签并更改edittextbox,更新时我可以比较它们的值,例如edittextbox值不等于labeldata值然后插入, 但是当gridview的rowupdating或数据绑定时,我无法找到标签的值

我该怎么做?

我试过

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        int rowCount = GridView1.Rows.Count;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (rowCount >= 1)
            {
                Label lbDA_TEL_HK_NO = ((Label)e.Row.FindControl("lblKM_TEL"));
                Session["DA_TEL_HK_NO"] = lbDA_TEL_HK_NO.Text;
            }
        }
    }

它可以找到所有gridview数据,但不能找到我选择的

P.S我是新手,请帮帮我

<asp:TemplateField ItemStyle-Width = "150px"  HeaderText = "香港內線">
<ItemTemplate>
    <asp:Label ID="lblHK_TEL" runat="server"
            Text='<%# Eval("[DA_TEL_HK_NO]")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
    <asp:TextBox ID="txtHK_TEL" runat="server" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')"  MaxLength="3"
        Text='<%# Eval("[DA_TEL_HK_NO]")%>'></asp:TextBox>
</EditItemTemplate> 

2 个答案:

答案 0 :(得分:1)

你可以尝试这样的东西来读取网格视图中的所有行:

for (var i = 0; i < GridView1.Rows.Count; i++)
{
    var label = GridView1.Rows[i].FindControl("lblKM_TEL") as Label;

    if (label != null)
    {
        // Manipulate label control
    }
}

或者您可以从所选行中获取标签:

var label = GridView1.SelectedRow.FindControl("lblKM_TEL") as Label;

if (label != null)
{
    // Manipulate label control
}

答案 1 :(得分:0)

从您的aspx标记中,您使用了错误的标签ID。

您需要使用此标签ID lblHK_TEL

您的代码在更改后的内容如下所示

Label lbDA_TEL_HK_NO = ((Label)e.Row.FindControl("lblHK_TEL"));