如何在网格外事件中获取网格视图中的单元格控件和数据? [英] how can i get a cell control and data in gridview in out of grid events?
问题描述
我有一个gridview,其中有2列(templateColumn),第一个是复选框,第二个是复选框列表.该网格的行是从数据库创建的.每个复选框列表可以具有0到4个复选框,具体取决于数据库中的关系记录.
现在我的问题是,我有一个对象列表,每个对象都有0到4个相关记录.对于每个主要对象,必须检查其在网格中的相等性,然后在其关系记录中,应检查其在复选框列表中的相等性.
但是我无法访问网格外事件的行.
有我的代码:
i have a gridview that has 2 column (templateColumn)the frist is checkbox and the second in checkboxlist. this grid''s row is created from database. each checkboxlist can has 0 til 4 cheboxes depends on relation records in database.
now my broblem is that ,i have a listof object that each o them has 0 til 4 relational records. for each main object , it''s equal in grid must checked, and fore its relational records their equals in checkboxlist colum should checked.
but i can;t access to rows out of grid event.
there is my code :
<div id="divMenuCapabilities" dir="rtl" align=right runat="server" style=" height:300px; overflow:scroll;">
<asp:GridView ID="grid1" runat="server" AutoGenerateColumns=false OnRowDataBound="grid1_OnRowDataBound" >
<Columns>
<asp:TemplateField HeaderText="عنوان فرم">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" text='<%#Eval("MenuItemName")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="قابلیت های فرم" >
<ItemTemplate>
<asp:CheckBoxList runat="server" ID="cblCap" RepeatDirection= "Horizontal" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
private void FillGrid1()
{
ENTMenuItemEOList menuItemEoList = new ENTMenuItemEOList();
menuItemEoList.LoadAll();
ENTCapabilityEOList capabilityEoList = new ENTCapabilityEOList();
capabilityEoList.Load();
foreach (ENTMenuItemEO menuItemEo in menuItemEoList)
{
List<ENTCapabilityEO> entCapabilityEos = new List<ENTCapabilityEO>();
entCapabilityEos = capabilityEoList.Where(cap => cap.ENTMenuItemId == menuItemEo.ID).ToList();
menuItemEo.EntCapabilityEOListObject = entCapabilityEos;
}
grid1.DataSource = menuItemEoList;
grid1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string roleIdStr = Request.QueryString["id"];
int roleId = 0;
if (!string.IsNullOrEmpty(roleIdStr))
{
roleId = Convert.ToInt32(roleIdStr);
}
FillGrid1();
populateObjects(roleId);
}
}
private void populateObjects(int id)
{
ENTRoleCapabilityEOList roleCapList = new ENTRoleCapabilityEOList();
roleCapList.LoadByRoleId(1);
SetRoleCapToLvRoleCap(roleCapList);}
现在我想根据以下方法中的listof对象在两个列中选中一些复选框.但我不知道该怎么做.我无法在网格外事件中获得单元格控件.
请帮帮我.
now i want checked some checkboxes in both colums according to a listof object in below method. but i dont know how to do this. i can''t get cell control''s in out of grid event.
please help me.
private void SetRoleCapToLvRoleCap(ENTRoleCapabilityEOList selectedRoleCapList)
{
List<ENTMenuItemEO> menuItemEoList = (List<ENTMenuItemEO>) grid1.DataSource;
foreach (ENTRoleCapabilityEO entRoleCapabilityEo in selectedRoleCapList)
{
ENTCapabilityEO capabilityEo = new ENTCapabilityEO();
capabilityEo.Load(entRoleCapabilityEo.ENTCapabilityId);
}
推荐答案
为了迭代而不是使用GridView事件,您可以使用此代码
Hi,
In order to iterate instead of using GridView events you can use this code
foreach (GridViewRow grv in grid1.Rows)
{
CheckBox CheckBox1=grv.FindControl("CheckBox1") as CheckBox;
CheckBoxList cblCap = grv.FindControl("cblCap") as CheckBoxList;
}
现在,您可以应用验证逻辑,因为现在可以使用所有用户输入数据.
希望这会有所帮助.
Now you can apply your validation logics as all user input data is now available for you to use.
Hope this will help.
这篇关于如何在网格外事件中获取网格视图中的单元格控件和数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!