如何访问特定选定行和已检查行的gridview单元格。以下是代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True">
<Columns>
<asp:TemplateField HeaderText="IsApproved">
<ItemTemplate>
<asp:CheckBox ID="chkApproved" runat="server" CommandName="Approve" />
</ItemTemplate></asp:TemplateField></Columns></asp:GridView>
<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Text="Approve" Value="1"></asp:ListItem>
<asp:ListItem Text="Reject" Value="2"></asp:ListItem>
</asp:RadioButtonList>
gridview的数据源由Page_Load上的强类型数据集设置。现在在btnSubmit上我想将选中的行插入我的数据库表中(如果已选中)
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (RadioButtonList1.SelectedValue == "1")
{
foreach (GridViewRow row in GridView1.Rows)
{
var chk = row.FindControl("chkApproved") as CheckBox;
if (chk.Checked)
{
DataSet1TableAdapters.tbl_ApproveTableAdapter ta = new DataSet1TableAdapters.tbl_ApproveTableAdapter();
DataSet1.tbl_ApproveDataTable dt = new DataSet1.tbl_ApproveDataTable();
ta.Insert()// here I've to specify the cells of GV
}
}
}
}
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="Submit" />
我这里有两个问题
i)如果在复选框
中选中了行,则访问gridview单元格ii)在我的GV选择中,它会自动设置为AutoPostback,我要禁用它,因为它正在清除所选的复选框。
答案 0 :(得分:1)
更新面板会自动回发,但您可以使用AsyncPostBackTrigger禁用自动回复。将ChildrenAsTriggers属性设置为true,将UpdateMode属性设置为Conditional
<asp:UpdatePanel ID="myPanel" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
<ContentTemplate>
// put your code here to avoid autopost back
</ContentTemplate>
</asp:UpdatePanel>
禁用自动后备的另一种方法是将AutoPostBack设置为false ...
<asp:RadioButtonList ID="RadioButtonList1" AutoPostBack="False">
答案 1 :(得分:0)
您需要像这样绑定gridview
if (!Page.IsPostBack)
{
GridView1.DataSource = source;
GridView1.DataBind();
}
然后试试。当然它会给你预期的结果。
答案 2 :(得分:0)
尝试使用 CommandArgument ='&lt;%#Container.DataItemIndex%&gt;'属性。
它返回所选GridView行的索引。
然后在单击事件上,您可以编写逻辑以获取所选gridview行的特定行和列的值
例如,如果要访问第1行的第3列,则可以编写
GridView.Rows [0] .Cells [2] .Text 在click事件或checkedchange事件中获取值。