我的ASPxGridView
列中包含ASPxTextBox
<dx:GridViewDataTextColumn Caption="Capacity" FieldName="Capacity" VisibleIndex="4" >
<DataItemTemplate>
<dxe:ASPxTextBox ID="txtCapacity" runat="server" Text='<%# Eval("Capacity") %>'>
</dxe:ASPxTextBox>
</DataItemTemplate>
</dx:GridViewDataTextColumn>
我添加了一个用于保存容量的按钮。
我使用GetRowValues(index, field_name)
访问其他字段,FindRowCellTemplateControl(index, column, id)
能够获得txtCapacity
的值。但问题是,当涉及到分页时,我无法访问其他页面中的文本框。
有关于此的任何想法?感谢
编辑v.1
这是我调用FindRowCellTemplateControl()
protected void btnSave_Click(object sender, EventArgs e)
{
List<Capacity> capacityList = new List<Capacity>();
for (int i = 0; gvCapacity.VisibleRowCount > i; i++)
{
Capacity c = new Capacity();
c.Id = (int)gvCapacity.GetRowValues(i, "Id");
ASPxTextBox txtCapacity = (ASPxTextBox)gvCapacity.FindRowCellTemplateControl(i, (GridViewDataColumn)gvCapacity.Columns["Capacity"], "txtCapacity");
c.Value = Convert.ToInt32(txtCapacity.Text);
capacityList.Add(c);
}
//Save Capacity
//...
}
答案 0 :(得分:1)
ASPxGridView仅为活动页面创建模板控件。因此,无法通过 FindRowCellTemplateControl 方法获取对不存在控件的引用。
请参阅DX支持中心的http://www.devexpress.com/issue=Q341997讨论,详细了解如何解决此问题。
答案 1 :(得分:0)
无论我对你的问题发表评论,如果我当时得到了你的问题,
你有一个ASPxButton
并希望Click
在Capacities
ASPxGridView
试试这个:
protected void ASPxButton1_Click(object sender, EventArgs e)
{
//Loop throug all Pages
for (int i = 0; i < ASPxGridView1.PageCount; i++)
{
//Select current page
ASPxGridView1.PageIndex = i;
//Loop through all rows inisde the page
for (int J = 0; J < ASPxGridView1.SettingsPager.PageSize; J++)
{
//Get currnt TextBox
DevExpress.Web.ASPxEditors.ASPxTextBox txtbox =
ASPxGridView1.FindRowCellTemplateControl(J,
(DevExpress.Web.ASPxGridView.GridViewDataColumn)ASPxGridView1.Columns["Capacitiy"],
"txtCapacity") as DevExpress.Web.ASPxEditors.ASPxTextBox;
//Do your logic here
}
}
}
我仍然鼓励您通过基础数据源获取数据