【问题标题】:gridview is disappearing when clicked on rowediting event单击行编辑事件时,gridview 消失
【发布时间】:2017-09-19 06:11:17
【问题描述】:

我正在创建一个 Web 应用程序,其中在我的 gridview 中有一个行 RowEditing 事件,在该事件中我将标签的值分配到 EditItemTemplate 中的文本框中

但我遇到了问题,

我的文本框出现在第二次点击时,例如

我需要单击两次然后我的文本框出现并且(假设我 单击行号(1)和行号(5),文本框是 出现在行号(1))

这就是我的代码的样子

protected void gridone_RowEditing(object sender, GridViewEditEventArgs e)
{
    Label lblone = (Label)gridone.Rows[e.NewEditIndex].FindControl("lbltaskmid");
    string one = lblone.Text;
    string script = "alert('" + one + "');";
    ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert", script, true);
}

所以我像这样更改代码

protected void gridone_RowEditing(object sender, GridViewEditEventArgs e)
{
    Label lblone = (Label)gridone.Rows[e.NewEditIndex].FindControl("lbltaskmid");
    string one = lblone.Text;
    string script = "alert('" + one + "');";
    ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert", script, true);
    gridone.DataBind();
}

现在当我点击编辑按钮时,我的 gridview 消失了

这是我的gridview的html代码

<asp:GridView OnRowEditing="gridone_RowEditing" ID="gridone" AutoGenerateColumns="False" runat="server">
    <Columns>
        <asp:TemplateField HeaderText="ID">
            <ItemTemplate>
                <asp:Label ID="lbltaskmid" runat="server" Text='<%#Eval("taskmid") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txttaskmid" runat="server"></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Name">
            <ItemTemplate>
                <asp:Label ID="lbltaskname" runat="server" Text='<%#Eval("taskname") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txttaskname" runat="server"></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Description">
            <ItemTemplate>
                <asp:Label ID="lbldesc" runat="server" Text='<%#Eval("description") %>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtdesc" runat="server"></asp:TextBox>
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:ButtonField ButtonType="Button" CommandName="Edit" HeaderText="Add" ShowHeader="True" Text="EDIT" />
    </Columns>    
</asp:GridView>

我需要在这里做什么?

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    你必须设置GridView的EditIndex

    protected void gridone_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gridone.EditIndex = e.NewEditIndex;
    
        gridone.DataSource = mySource;
        gridone.DataBind();
    }
    

    并且FindControl("lbltaskmid") 将不起作用,因为lbltaskmid 不在 EditItemTemplate 中。最好在 RowDataBound 事件中使用 FindControl 和读/写控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 2011-10-07
      • 2020-03-13
      • 2016-08-08
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      相关资源
      最近更新 更多