无法在RowCommand中获取gridview页脚值 [英] Unable to get gridview footer values in RowCommand

查看:229
本文介绍了无法在RowCommand中获取gridview页脚值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个页面,在动态GridView中输入员工休假详情。数据的输入将由gridview的页脚完成。当我尝试从页脚中获取值时,所有文本值以及其他值都将为空或。

以下是RowCommand的代码:

  protected void gvEmployeeDetails_RowCommand(object sender,GridViewCommandEventArgs e)
{
if(e.CommandName.Equals (ADD))
{

TextBox txtAddEmpID =(TextBox)gvEmployeeDetails.FooterRow.FindControl(txtAddEmpID);
RadioButtonList rblFooter =(RadioButtonList)gvEmployeeDetails.FooterRow.FindControl(rblFooter);
TextBox txtAddDoj =(TextBox)gvEmployeeDetails.FooterRow.FindControl(txtAddDoj);
TextBox txtAddLeaves =(TextBox)gvEmployeeDetails.FooterRow.FindControl(txtAddLeaves);
TextBox txtAddDesignation =(TextBox)gvEmployeeDetails.FooterRow.FindControl(txtAddDesignation);

conn.Open();
string cmdstr =insert into tblLeaves(EmpId,IsActive,DOJ,Leaves,Designation)values(@ EmpId,@ IsActive,@ DOJ,@ Leaves,@ Designation);
SqlCommand cmd = new SqlCommand(cmdstr,conn);
cmd.Parameters.AddWithValue(@ EmpId,txtAddEmpID.Text);
cmd.Parameters.AddWithValue(@ IsActive,rblFooter.SelectedValue);
cmd.Parameters.AddWithValue(@ DOJ,txtAddDoj.Text);
cmd.Parameters.AddWithValue(@ Leaves,txtAddLeaves.Text);
cmd.Parameters.AddWithValue(@ Designation,txtAddDesignation.Text);
cmd.ExecuteNonQuery();
conn.Close();
BindData();


以下是gridview:

 < asp:GridView ID =gvEmployeeDetailsrunat =serverwidth =100%
AutoGenerateColumns =FalseShowFooter =True
onrowcommand =gvEmployeeDetails_RowCommand
onrowdeleting =gvEmployeeDetails_RowDeleting
onrowupdating =gvEmployeeDetails_RowUpdating
onrowcancelingedit =gvEmployeeDetails_RowCancelingEdit
onrowediting =gvEmployeeDetails_RowEditing =text-align:centerBackColor =WhiteBorderColor =#CCCCCCBorderStyle =NoneBorderWidth =1pxCellPadding =3>
<列>
< asp:TemplateField HeaderText =员工ID>
< FooterTemplate>
< asp:TextBox ID =txtAddEmpIDrunat =server>< / asp:TextBox>
< asp:RequiredFieldValidator ID =rfvFooterEmpIDrunat =serverControlToValidate =txtAddEmpIDErrorMessage =*ForeColor =Red>< / asp:RequiredFieldValidator>
< / FooterTemplate>
< ItemTemplate>
< asp:Label ID =lblEmpIDrunat =serverText ='<%#DataBinder.Eval(Container.DataItem,EmpId)%>>< / asp:Label> ;
< / ItemTemplate>
< EditItemTemplate>
< asp:Label ID =lblEditEmpIDrunat =serverText ='<%#DataBinder.Eval(Container.DataItem,EmpId)%>>< / asp:Label> ;
< / EditItemTemplate>
< / asp:TemplateField>

< asp:TemplateField HeaderText =Is Active>
< EditItemTemplate>
< asp:RadioButtonList ID =rblEditrunat =server>
< asp:ListItem>是< / asp:ListItem>
< asp:ListItem>否< / asp:ListItem>
< / asp:RadioButtonList>
< / EditItemTemplate>
< FooterTemplate>
< asp:RadioButtonList ID =rblFooterrunat =server>
< asp:ListItem>是< / asp:ListItem>
< asp:ListItem>否< / asp:ListItem>
< / asp:RadioButtonList>
< asp:RequiredFieldValidator ID =rfvFooterIsActiverunat =serverControlToValidate =rblFooterErrorMessage =*ForeColor =Red>< / asp:RequiredFieldValidator>
< / FooterTemplate>
< ItemTemplate>
< asp:Label ID =lblIsActiverunat =serverText ='<%#DataBinder.Eval(Container.DataItem,IsActive)%>>< / asp:Label> ;
< / ItemTemplate>
< / asp:TemplateField>

< asp:TemplateField HeaderText =加入日期>
< ItemTemplate>
< asp:Label ID =lblDojrunat =serverText ='<%#DataBinder.Eval(Container.DataItem,DOJ)%>'>< / asp:Label> ;
< / ItemTemplate>
< EditItemTemplate>
< asp:TextBox ID =txtDojrunat =serverText ='<%#DataBinder.Eval(Container.DataItem,DOJ)%>>< / asp:TextBox> ;
< ajaxToolkit:CalendarExtender ID =txtDoj_CalendarExtenderrunat =serverBehaviorID =txtDoj_CalendarExtenderTargetControlID =txtDoj/>
< / EditItemTemplate>
< FooterTemplate>
< asp:TextBox ID =txtAddDojrunat =serverMaxLength =10OnTextChanged =txtAddDoj_TextChanged>< / asp:TextBox>
< ajaxToolkit:CalendarExtender ID =txtAddDoj_CalendarExtenderrunat =serverBehaviorID =txtAddDoj_CalendarExtenderTargetControlID =txtAddDoj/>
< asp:RequiredFieldValidator ID =rfvFooterDOJrunat =serverControlToValidate =txtAddDojErrorMessage =*ForeColor =Red>< / asp:RequiredFieldValidator>
< / FooterTemplate>
< / asp:TemplateField>

< asp:TemplateField HeaderText =叶子的数量>
< ItemTemplate>
< asp:Label ID =lblLeavesrunat =serverText ='<%#DataBinder.Eval(Container.DataItem,Leaves)%>'>< / asp:Label> ;
< / ItemTemplate>
< EditItemTemplate>
< asp:TextBox ID =txtLeavesrunat =serverText ='<%#DataBinder.Eval(Container.DataItem,Leaves)%>>< / asp:TextBox> ;
< / EditItemTemplate>
< FooterTemplate>
< asp:TextBox ID =txtAddLeavesrunat =server>< / asp:TextBox>
< asp:RequiredFieldValidator ID =rfvFooterLeavesrunat =serverControlToValidate =txtAddLeavesErrorMessage =*ForeColor =Red>< / asp:RequiredFieldValidator>
< / FooterTemplate>
< / asp:TemplateField>

< asp:TemplateField HeaderText =指定>
< ItemTemplate>
< asp:Label ID =lblDesignationrunat =serverText ='<%#DataBinder.Eval(Container.DataItem,Designation)%>'>< / asp:Label> ;
< / ItemTemplate>
< EditItemTemplate>
< asp:TextBox ID =txtDesignationrunat =serverText ='<%#DataBinder.Eval(Container.DataItem,Designation)%>>< / asp:TextBox> ;
< / EditItemTemplate>
< FooterTemplate>
< asp:TextBox ID =txtAddDesignationrunat =server>< / asp:TextBox>
< asp:RequiredFieldValidator ID =rfvFooterDesigrunat =serverControlToValidate =txtAddDesignationErrorMessage =*ForeColor =Red>< / asp:RequiredFieldValidator>
< / FooterTemplate>
< / asp:TemplateField>

< asp:TemplateField HeaderText =Action>
< ItemTemplate>
< asp:ImageButton ID =imgbtnEditrunat =serverCommandName =EditImageUrl =〜/ Images / Edit.pngHeight =32pxWidth =32px/>
< asp:ImageButton ID =imgbtnDeleterunat =serverCommandName =DeleteImageUrl =〜/ Images / Delete.pngHeight =32pxWidth =32px/>
< / ItemTemplate>
< EditItemTemplate>
< asp:ImageButton ID =imgbtnUpdaterunat =serverCommandName =UpdateImageUrl =〜/ Images / icon-update.png/>
< asp:ImageButton ID =imgbtnCancelrunat =serverCommandName =CancelImageUrl =〜/ Images / icon-Cancel.png/>
< / EditItemTemplate>
< FooterTemplate>
< asp:LinkBut​​ton ID =lbtnAddrunat =serverCommandName =ADDText =AddWidth =100px>< / asp:LinkBut​​ton>
< / FooterTemplate>
< / asp:TemplateField>
< /列>
< FooterStyle BackColor =WhiteForeColor =#000066/>
< HeaderStyle BackColor =#006699Font-Bold =TrueForeColor =White/>
< RowStyle ForeColor =#000066/>
< SelectedRowStyle BackColor =#669999Font-Bold =TrueForeColor =White/>
< SortedAscendingCellStyle BackColor =#F1F1F1/>
< SortedAscendingHeaderStyle BackColor =#007DBB/>
< SortedDescendingCellStyle BackColor =#CAC9C9/>
< SortedDescendingHeaderStyle BackColor =#00547E/>
< / asp:GridView>

请更正我出错的地方。

解决方案

您在查找控制代码行中未使用发件人。尝试替换下面的行。

  TextBox txtAddEmpID =(TextBox)gvEmployeeDetails.FooterRow.FindControl(txtAddEmpID); 

this。

  protected void gridview_RowCommand(object sender,System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
if(e.CommandName ==Add){
TextBox txtAddEmpID =(TextBox)((GridView)sender).FooterRow.FindControl(txtAddEmpID);
}
}


I'm creating a page to enter employee's leave details in a dynamic gridview. Entry of data will be done by the from the footer of the gridview. When I try to get the values from the footer, all the text values as well as other values are coming as null or "".

Here is the code of RowCommand:

protected void gvEmployeeDetails_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("ADD"))
            {

                TextBox txtAddEmpID = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddEmpID");
                RadioButtonList rblFooter = (RadioButtonList)gvEmployeeDetails.FooterRow.FindControl("rblFooter");
                TextBox txtAddDoj = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddDoj");
                TextBox txtAddLeaves = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddLeaves");
                TextBox txtAddDesignation = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddDesignation");

                conn.Open();
                string cmdstr = "insert into tblLeaves(EmpId,IsActive,DOJ,Leaves,Designation) values(@EmpId,@IsActive,@DOJ,@Leaves,@Designation)";
                SqlCommand cmd = new SqlCommand(cmdstr, conn);
                cmd.Parameters.AddWithValue("@EmpId", txtAddEmpID.Text);
                cmd.Parameters.AddWithValue("@IsActive", rblFooter.SelectedValue);
                cmd.Parameters.AddWithValue("@DOJ", txtAddDoj.Text);
                cmd.Parameters.AddWithValue("@Leaves", txtAddLeaves.Text);
                cmd.Parameters.AddWithValue("@Designation", txtAddDesignation.Text);
                cmd.ExecuteNonQuery();
                conn.Close();
                BindData();
            }
        }

And below is the gridview:

<asp:GridView ID="gvEmployeeDetails" runat="server" Width="100%"
                    AutoGenerateColumns="False" ShowFooter="True"
                    onrowcommand="gvEmployeeDetails_RowCommand"
                    onrowdeleting="gvEmployeeDetails_RowDeleting"
                    onrowupdating="gvEmployeeDetails_RowUpdating"
                    onrowcancelingedit="gvEmployeeDetails_RowCancelingEdit"
                    onrowediting="gvEmployeeDetails_RowEditing" style="text-align: center" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3">
                <Columns>           
                    <asp:TemplateField HeaderText="Employee ID">
                        <FooterTemplate>
                            <asp:TextBox ID="txtAddEmpID" runat="server"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="rfvFooterEmpID" runat="server" ControlToValidate="txtAddEmpID" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblEmpID" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "EmpId") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>           
                            <asp:Label ID="lblEditEmpID" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "EmpId") %>'></asp:Label>           
                        </EditItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Is Active">
                        <EditItemTemplate>
                            <asp:RadioButtonList ID="rblEdit" runat="server">
                                <asp:ListItem>Yes</asp:ListItem>
                                <asp:ListItem>No</asp:ListItem>
                            </asp:RadioButtonList>
                        </EditItemTemplate>
                        <FooterTemplate>
                            <asp:RadioButtonList ID="rblFooter" runat="server">
                                <asp:ListItem>Yes</asp:ListItem>
                                <asp:ListItem>No</asp:ListItem>
                            </asp:RadioButtonList>
                            <asp:RequiredFieldValidator ID="rfvFooterIsActive" runat="server" ControlToValidate="rblFooter" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblIsActive" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "IsActive") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Date Of Joining">
                        <ItemTemplate>
                            <asp:Label ID="lblDoj" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "DOJ") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>           
                            <asp:TextBox ID="txtDoj" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "DOJ") %>'></asp:TextBox>           
                            <ajaxToolkit:CalendarExtender ID="txtDoj_CalendarExtender" runat="server" BehaviorID="txtDoj_CalendarExtender" TargetControlID="txtDoj" />
                        </EditItemTemplate>
                        <FooterTemplate>
                            <asp:TextBox ID="txtAddDoj" runat="server" MaxLength="10" OnTextChanged="txtAddDoj_TextChanged" ></asp:TextBox>
                            <ajaxToolkit:CalendarExtender ID="txtAddDoj_CalendarExtender" runat="server" BehaviorID="txtAddDoj_CalendarExtender" TargetControlID="txtAddDoj" />
                            <asp:RequiredFieldValidator ID="rfvFooterDOJ" runat="server" ControlToValidate="txtAddDoj" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                        </FooterTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="No. Of Leaves">
                        <ItemTemplate>
                            <asp:Label ID="lblLeaves" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Leaves") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>           
                            <asp:TextBox ID="txtLeaves" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Leaves") %>'></asp:TextBox>           
                        </EditItemTemplate>
                        <FooterTemplate>
                            <asp:TextBox ID="txtAddLeaves" runat="server" ></asp:TextBox>
                            <asp:RequiredFieldValidator ID="rfvFooterLeaves" runat="server" ControlToValidate="txtAddLeaves" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                        </FooterTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Designation">
                        <ItemTemplate>
                            <asp:Label ID="lblDesignation" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Designation") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>           
                            <asp:TextBox ID="txtDesignation" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Designation") %>'></asp:TextBox>           
                        </EditItemTemplate>
                        <FooterTemplate>
                            <asp:TextBox ID="txtAddDesignation" runat="server" ></asp:TextBox>
                            <asp:RequiredFieldValidator ID="rfvFooterDesig" runat="server" ControlToValidate="txtAddDesignation" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
                        </FooterTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField HeaderText="Action">
                        <ItemTemplate>
                           <asp:ImageButton ID="imgbtnEdit" runat="server" CommandName="Edit" ImageUrl="~/Images/Edit.png" Height="32px" Width="32px"/>
                           <asp:ImageButton ID="imgbtnDelete" runat="server" CommandName="Delete" ImageUrl="~/Images/Delete.png" Height="32px" Width="32px"/>
                        </ItemTemplate>
                        <EditItemTemplate>
                           <asp:ImageButton ID="imgbtnUpdate" runat="server" CommandName="Update" ImageUrl="~/Images/icon-update.png"/>
                           <asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="~/Images/icon-Cancel.png"/>
                        </EditItemTemplate>
                        <FooterTemplate>
                           <asp:LinkButton ID="lbtnAdd" runat="server" CommandName="ADD" Text="Add" Width="100px"></asp:LinkButton>
                        </FooterTemplate>
                    </asp:TemplateField>                    
                </Columns>           
                    <FooterStyle BackColor="White" ForeColor="#000066" />
                    <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
                    <RowStyle ForeColor="#000066" />
                    <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                    <SortedAscendingCellStyle BackColor="#F1F1F1" />
                    <SortedAscendingHeaderStyle BackColor="#007DBB" />
                    <SortedDescendingCellStyle BackColor="#CAC9C9" />
                    <SortedDescendingHeaderStyle BackColor="#00547E" />
            </asp:GridView>

Please correct me where I'm going wrong.

解决方案

You are not using sender in your find control code line. Try to replace below line.

TextBox txtAddEmpID = (TextBox)gvEmployeeDetails.FooterRow.FindControl("txtAddEmpID");

this.

protected void gridview_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
    if (e.CommandName == "Add") {
        TextBox txtAddEmpID = (TextBox)((GridView)sender).FooterRow.FindControl("txtAddEmpID");
    }
}

这篇关于无法在RowCommand中获取gridview页脚值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆