无法访问modalpopup中gridview内的文本框

时间:2017-09-11 10:25:06

标签: c# asp.net gridview

我在模式弹出窗口中有一个gridview,我在edititemtemplate中使用更新文本框,然后使用linkbutton触发回发事件,这样我就可以将值保存在该gridview行的文本框中,但是在代码背后我我使用findcontrol时无法访问文本框。 请帮助

<div id="userForm"  class="form-horizontal" style="display:none;width:100%;border:solid 0px;" >
    <input ID="btnshowRun" type="button" Value="Show Leave" class="btn btn-warning " style="float:lefts;" OnClick ="showhide();"/>

   <asp:UpdatePanel ID="UpdatePanel5" runat="server" style="display:none;">
        <ContentTemplate>
            <asp:GridView ID="GridView2" runat="server" AllowSorting="False" 
                AutoGenerateColumns="False" DataKeyNames="EntryID"
                EmptyDataText="There are no data records to display."
                ShowFooter="False" HorizontalAlign="Center" OnRowCommand="gvl_RowCommand"
                ShowHeaderWhenEmpty="True" CssClass="table table-striped table-bordered table-hover table-responsive table-condenseds " Width="100%" GridLines="None">
                <Columns>
                    <asp:TemplateField HeaderText="Total" SortExpression="Total">
                        <EditItemTemplate>
                            <asp:TextBox ID="Tot" runat="server" Text='<%# Bind("Total") %>' class="form-control"></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label4" runat="server" Text='<%# Bind("Total") %>'></asp:Label>
                        </ItemTemplate>
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>
                    <asp:TemplateField ShowHeader="False">
                        <EditItemTemplate>
                            <asp:LinkButton ID="CommandButton" runat="server" CommandArgument='<%# Eval("EntryID") %>' UseSubmitBehaviour=true CausesValidation="False"
                                CommandName="Update" OnCommand="Updates_Command" Text="Update" class="btn btn-primary btn-sm contrl" Style="margin-right: 10px;"
                                />
                            &nbsp;<asp:LinkButton ID="Button2" runat="server" CausesValidation="False" CommandName="Cancel" class="btn btn-warning btn-sm contrl" Style="margin-right: 10px;"
                                Text="Cancel" />
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:LinkButton ID="Button1" runat="server" CommandArgument='<%# Eval("EntryID") %>' class="form-control btn btn-default btn-blocks contrl btn-sms"
                                CommandName="Edit" OnCommand="Button1_Command" Text="Edit" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <HeaderStyle HorizontalAlign="Center" Font-Bold="True" ForeColor="Black"></HeaderStyle>
            </asp:GridView>
        </ContentTemplate>
       </asp:UpdatePanel>
</div>

这是我在C#中访问控件的方式

protected void Updates_Command(object sender, CommandEventArgs e)
{
    Control p = ((Control)sender).Parent;

    int tot = int.Parse(((TextBox)p.FindControl("Tot")).Text); 
    int rowid = int.Parse(Session["RowID"].ToString());
    int suc = Database.ExecuteNonQuery("UPDATE LeaveAssignmentEntry SET Total='" + tot + "' WHERE Id = " + rowid + "");

    if (suc==1)
    {
        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "alert('Successful')", true);

    }
}

2 个答案:

答案 0 :(得分:1)

您可以使用此代码在模板中查找控件:

public static String encryptData(String s) {
    if (s == null) return "";
    return Base64.encodeToString(s.getBytes(), Base64.URL_SAFE);
}

答案 1 :(得分:0)

使用以下行通过FindControl方法从TextBox获取文本:

string tot = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("Tot")).Text;