无法在RowCommand中获取gridview页脚值 [英] Unable to get gridview footer values in RowCommand
本文介绍了无法在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:LinkButton ID =lbtnAddrunat =serverCommandName =ADDText =AddWidth =100px>< / asp:LinkButton>
< / 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屋!
查看全文