ASP.. NET Gridview如何访问字段上的复选框
本文关键字:字段 复选框 访问 Gridview NET 何访问 ASP | 更新日期: 2023-09-27 18:08:03
我有一个ASP。. NET Web Forms页面,我有一个字段,我从SQL Server数据库加载一些数据。我还添加了一个Checkbox控件字段如下:
if (!e.Row.Cells[8].Text.Equals("---"))
{
CheckBox chkbox = new CheckBox();
chkbox.ID = "SelectedTel8_" + e.Row.Cells[1].Text;
chkbox.Text = e.Row.Cells[8].Text;
e.Row.Cells[8].Controls.Add(chkbox);
chkbox.Attributes.Add("OnClick", "javascript:selectCheckBox(this);");
chkbox = null;
}
if (!e.Row.Cells[9].Text.Equals("---"))
{
CheckBox chkbox = new CheckBox();
chkbox.ID = "SelectedTel9_" + e.Row.Cells[1].Text;
chkbox.Text = e.Row.Cells[9].Text;
e.Row.Cells[9].Controls.Add(chkbox);
chkbox.Attributes.Add("OnClick", "javascript:selectCheckBox(this);");
chkbox = null;
}
if (!e.Row.Cells[10].Text.Equals("---"))
{
CheckBox chkbox = new CheckBox();
chkbox.ID = "SelectedTel10_" + e.Row.Cells[1].Text;
chkbox.Text = e.Row.Cells[10].Text;
e.Row.Cells[10].Controls.Add(chkbox);
chkbox.Attributes.Add("OnClick", "javascript:selectCheckBox(this);");
chkbox = null;
}
在这个页面上,我还创建了一个按钮行:
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="ButtonSendSMS" runat="server" Text="EnviarSms" CommandName="EnviarSms1" OnClientClick="javascript:SendSmsTel(this);" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
它调用一个名为SendSmsTel的javascript函数。
我需要做的是:
每当用户单击按钮时,我需要从该行的其他字段检索信息,以便在其他操作中使用它。
的问题是,我找不到一种方法来访问那一行的元素。当我在给定行上有控件时,我对它们进行了标识,然后可以使用
window.document.getElementById()
但是没有控件的数据字段呢?
[link]我试了很多方法,但都不起作用。不知道我做错了什么如何使用javascript访问gridview单元格值[链接]如何在asp.net中使用javascript在GridView中获得给定行的列值?[链接]为什么是容器?作为字符串文字传递的数据项?
如何访问单击按钮所在行的内容?如果可以的话,教我c#和JavaScript。谢谢。
c#中:
-你可以触发OnClick事件,例如
<asp:TemplateField HeaderText="Product>
<ItemTemplate>
<asp:LinkButton ID="lb_filter" ToolTip="Product" runat="server" CommandArgument='<%#Eval("ProductID") %>'
OnClick="lb_filter_Click"><img src="resources/images/search_button.png" style="width:22px;" /></asp:LinkButton>
</ItemTemplate>
<HeaderStyle HorizontalAlign="center" Width="70px" />
<ItemStyle HorizontalAlign="center" Width="70px" />
</asp:TemplateField>
在代码中:
protected void lb_filter_Click(object sender, EventArgs e)
{
var linkbuntton = (LinkButton)sender;
if (linkbuntton != null)
{
int ProductId =int.Parse(linkbuntton.CommandArgument);
var objProduct = _entities.Products.Where(o => o.ProductID == ProductId).FirstOrDefault();
//TODO : so now you have got content of that row
}
}
或者你可以在gridview中查询,例如使用复选框:
foreach (GridViewRow row in gvAwards.Rows)
{
var cb = (CheckBox)row.FindControl("cbCheck");
if (cb.Checked)
{
int _ID = int.Parse(gvAwards.DataKeys[row.RowIndex].Value.ToString());
var item = _entities.Awards.Where(c => c.AwardsID == _ID).FirstOrDefault();
//TODO: so now, you can get contents of that row
}
}
Javascript代码:您可以为一行中的每个控件添加唯一的类,前缀/后缀为keyId例如:
<asp:TemplateField HeaderText="add">
<ItemTemplate>
<a href="#" class="href_<%# Eval("BannerLocationID") %>" onclick="ShowinsertlistForm('<%# Eval("BannerLocationID") %>')" >
<img src="resources/images/add.png" style="width:22px;" /></a>
</ItemTemplate>
<HeaderStyle HorizontalAlign="center" Width="60px" />
<ItemStyle HorizontalAlign="center" Width="60px" />
</asp:TemplateField>
javascript代码中的:可以通过CSS类
轻松获取元素 function ShowinsertlistForm(Id)
{
var href = document.getElementsByClassName('href_'+Id);
var checkbox = document.getElementsByClassName('checkbox_'+Id);
//TODO : some thing like that
}