- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 GridView,我从 SQL 数据库将数据源绑定(bind)到它,网格中有一个带有复选框的列,因此我可以在其中“选择”一些项目(实际上是行)。我在这里想要的是对每个选定行中的项目进行一些更新,但经过一些搜索后我找不到如何访问一行中的项目,我虽然 DataItem 可以工作,但它给了我一个 Null。
编辑:简而言之,我有一个从数据源构建的 GridView,所以基本上,每一行代表一个对象,当我在其中一行中选中一个复选框时,我想要获取与该行相关的对象,最简单的方法是什么?
Page_Load 上的数据绑定(bind):
if (!Page.IsPostBack)
{
gvUnusedAccessories.DataSource = currentContext.Items.OfType<Accessory>().Where(ac => ac.Item_Parent_Id == ((PhoneLine)currentItem).Parent.Item_Id);
gvUnusedAccessories.AutoGenerateColumns = false;
gvUnusedAccessories.DataBind();
}
当我按下更新按钮时,它实际上浏览了行,如果该行有一个复选框,它就会进行更新:
protected void btnAddToMobile_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in gvUnusedAccessories.Rows)
{
if(((CheckBox)row.FindControl("chkSelect")).Checked)
{
((Accessory)row.DataItem).PhoneLine_Id = currentItem.Item_Id;
}
}
}
这是我在 .aspx 中的 GridView:
<asp:GridView ID="gvUnusedAccessories" runat="server">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:TemplateField HeaderText="Select">
<ItemTemplate >
<asp:CheckBox ID="chkSelect" runat="server" AutoPostBack="True"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Item_Id" HeaderText="ID" ReadOnly="True"/>
<asp:BoundField DataField="Item_Name" HeaderText="Name" ReadOnly="True"/>
<asp:BoundField DataField="AccessoryModel" HeaderText="Modèle" ReadOnly="True"/>
<asp:BoundField DataField="AccessoryBrand" HeaderText="Marque" ReadOnly="True"/>
</Columns>
</asp:GridView>
关于如何访问行中包含的对象的任何提示?我知道我实际上可以获取 ID,然后对我的数据库执行 SQL 请求,但它似乎有点繁重,必须有更好的解决方案。
最佳答案
除非您将数据源存储在 ViewState 或 session 中,否则一旦数据绑定(bind)完成,您就会丢失数据源。除非您这样做,否则 DataItem 将始终为 null。因此,我经常发现自己将数据源存储在 View 状态中。当然,这意味着您的页面大小会变大。您所说的另一个选项是使用某种主键重新查询数据源。根据您的需要,我不能说哪个选项更好。我倾向于倾向于查看状态而不是第二次数据库调用,因为这可能是一次昂贵的调用
关于c# - 从 GridViewRow ASP.NET 获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694835/
代码按预期跳过了 Header 并在它变成 DataRow 时进入。然后它每次都会立即因以下错误而中断。有人可以帮忙吗? 第 252 行:按钮 _singleClickButton = (kButto
我已经阅读了 msdn 的定义(见下文),但对我没有帮助。我正在将 gridviewrows 动态添加到我的 gridview,但不知道参数是什么。 public GridViewRow( i
我使用以下代码突出显示用户在 gridview 中单击的行(并取消突出显示先前选择的行): protected void PartListRowClicked(object sender, G
所以我使用这种方法使 GridView 的每一行都可以点击: protected void GridView1_RowDataBound(object sender, GridViewRowEvent
我有一个像这样定义的 GridView BoundField: 在代码隐藏中,我可以获取行的实例并读取如下文本: Row.Cells(0).Text 但是,当我像这样使 BoundField 不可见
为什么我不能从 GridViewRowPresenterBase 派生? public class GridViewRowPresenterEx : GridViewRowPresenterBase
我对这个问题很困惑。 我在 gridview 的模板字段旁边放置了一个按钮,并希望在单击相应按钮时从该特定 GridView 行返回数据。 在按钮点击
我有一个 gridview,其中有一个添加和删除行工具。我想知道如何在单击相应的删除按钮时删除特定的 gridview 行。 我到处搜索,但没有找到对我有用的东西 这是我的代码 Re
我在 gridview 的 rowcreated 事件中添加行控件,需要删除顶部边框线。 GridViewRow HeaderGridRow = new GridViewRow(0, 0, DataC
我有一个包含多列的 GridView。假设我有一个如下所示的业务模型: public class MyObject { public String Title {get;set;} public
我有一个 GridView,我从 SQL 数据库将数据源绑定(bind)到它,网格中有一个带有复选框的列,因此我可以在其中“选择”一些项目(实际上是行)。我在这里想要的是对每个选定行中的项目进行一些更
我正在使用一些代码来检查 GridViewRow 单元格中的控件。我想要一些代码按照(myRow.Cells[0].Controls is BoundField == true)的方式做一些事情。显然
我有一个带有数据绑定(bind)值的 gridview。我在“ReportMain”表中有 5 行,其中包含字段(Id、日期、时间、名称、区域、工作、描述、优先级、状态),我正在显示所有 5 行gri
我在 GridViewRow 单元格中有一个标签控件,我需要使用 Javascript 从客户端访问它。我可以很好地访问 GridView 行,但我终究无法弄清楚如何访问其中的标签。 布局:
我有很多数据要在 GridView 中显示。因为每行有很多信息,所以我希望能够在用户单击该行时显示附加信息,因此我认为 AJAX 工具包中的 PopupExtender 将是完美的。 理想情况下,我希
我有一个带有 CheckBox 和 DropDownList 作为模板字段列的 GridView。我试图在选中该行的复选框时启用该行的 DropDownList。 这是我的 aspx:
我是一名优秀的程序员,十分优秀!