提问:如何判断在DataGrid中我选中的是那个?并且我………进来看吧。

pengcheng 2003-09-14 11:41:35
我又来打扰各位了。哈哈。
我在DataGrid中添加了一列模板,里面放的是Checkbox,我如何在xxx.aspx.cs中写代码判断出我我选中的是那一个?我在最低下一行加了"全选"放置了一个checkbox
我第一次单击的时候,它上面的所有checkbox全部选中,再点一次的时候全部取消(不选中).请问如何实现?
我不想写在xxx.aspx里面.在那里写脚本.
不会的就帮忙顶一下.
...全文
51 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengcheng 2003-09-18
  • 打赏
  • 举报
回复
兄弟姐妹们:对不起了,刚才我担扰你们了。我搞定了。万分感谢。
pengcheng 2003-09-15
  • 打赏
  • 举报
回复
这是我的DataGrid的代码,你看看。帮我研究一下。
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 88px"
runat="server" AutoGenerateColumns="False" ShowFooter="True">
<Columns>
<asp:BoundColumn DataField="s_name" HeaderText="学生姓名" FooterText="全选:"></asp:BoundColumn>
<asp:TemplateColumn>
<HeaderTemplate>
编辑
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="cc" Runat="server"></asp:CheckBox>
</ItemTemplate>
<FooterTemplate>
<asp:CheckBox ID="ccc" Runat="server"></asp:CheckBox>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
pengcheng 2003-09-15
  • 打赏
  • 举报
回复
我有个很菜的问题:我怎么激发不了checkbox的事件呢。它实际是包含在Datagrid中哟。
zhongkeruanjian 2003-09-15
  • 打赏
  • 举报
回复
这个也试试
DataGridItem container = (DataGridItem) box.NamingContainer;
pengcheng 2003-09-15
  • 打赏
  • 举报
回复
好哇,我去试试。
zhongkeruanjian 2003-09-15
  • 打赏
  • 举报
回复
SORRY:
DATAGRIDITEM ITEM = (DATAGRIDITEM) BOX.CONTAINER
改为:
DATAGRIDITEM ITEM = (DATAGRIDITEM) BOX.PARENT
zhongkeruanjian 2003-09-15
  • 打赏
  • 举报
回复
你的问题解决如下:
<%@ Import Namespace="System.Data" %>
<%@ Page Language="C#" AutoEventWireup="True" %>
<HTML>
<script runat="server">

DataTable Store = new DataTable();
DataView StoreView;

void Page_Load(Object sender, EventArgs e)
{
if(Session["StoreData"] == null)
{
DataRow dr;

Store = new DataTable();

Store.Columns.Add(new DataColumn("Tax", typeof(String)));
Store.Columns.Add(new DataColumn("Item", typeof(String)));
Store.Columns.Add(new DataColumn("Price", typeof(String)));

Session["StoreData"] = Store;

// Create sample data.
for (int i = 1; i <= 4; i++)
{
dr = Store.NewRow();

dr[0] = "0.0%";
dr[1] = "Item " + i.ToString();
dr[2] = (1.23 * (i + 1)).ToString();

Store.Rows.Add(dr);
}

}
else
Store = (DataTable)Session["StoreData"];

StoreView = new DataView(Store);
StoreView.Sort="Item";

if(!IsPostBack)
BindGrid();

}
void Box_Click(Object sender,EventArgs e)
{
CheckBox box = (CheckBox) sender;
if(box.Checked)
Response.Write("true");
else
Response.Write("false");
}
void Total_Click(Object sender,EventArgs e)
{
for(int i=0 ;i<MyDataGrid.Items.Count;i++)
{
CheckBox box = (CheckBox) sender;
DataGridItem item = (DataGridItem) MyDataGrid.Items[i];
if((item.ItemType == ListItemType.AlternatingItem)||(item.ItemType == ListItemType.Item))
{
CheckBox boxx =(CheckBox) item.FindControl("Checkbox2");
boxx.Checked = box.Checked;
}
if((item.ItemType == ListItemType.EditItem))
{
CheckBox boxx =(CheckBox) item.FindControl("Checkbox1");
boxx.Checked = box.Checked;
}
}

}
void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e)
{
MyDataGrid.EditItemIndex = e.Item.ItemIndex;
BindGrid();
}

void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e)
{
MyDataGrid.EditItemIndex = -1;
BindGrid();
}

void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
{
// Get the text box that contains the price to edit.
// For bound columns the edited value is stored in a text box.
// The text box is the first control in the Controls collection.
TextBox priceText = (TextBox)e.Item.Cells[3].Controls[0];

// Get the check box that indicates whether to include tax from the
// TemplateColumn. Notice that in this case, the check box control is
// second control in the Controls collection.
CheckBox taxCheck = (CheckBox)e.Item.Cells[2].Controls[1];

String item = e.Item.Cells[1].Text;
String price = priceText.Text;

DataRow dr;

// With a database, use an update command. Since the data source is
// an in-memory DataTable, delete the old row and replace it with a new one.

// Remove old entry.
StoreView.RowFilter = "Item='" + item + "'";
if (StoreView.Count > 0)
StoreView.Delete(0);
StoreView.RowFilter = "";

// Add new entry.
dr = Store.NewRow();

if (taxCheck.Checked)
dr[0] = "8.6%";
else
dr[0] = "0.0%";
dr[1] = item;
dr[2] = price;
Store.Rows.Add(dr);

MyDataGrid.EditItemIndex = -1;
BindGrid();
}

void BindGrid()
{
MyDataGrid.DataSource = StoreView;
MyDataGrid.DataBind();
}

</script>
<body>
<form runat="server" ID="Form1">
<h3>TemplateColumn Example</h3>
<asp:DataGrid id="MyDataGrid" runat="server" BorderColor="black" CellPadding="2" OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update" ShowFooter="True"
AutoGenerateColumns="false">
<Columns>
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false" HeaderText="Edit Controls" />
<asp:BoundColumn HeaderText="Description" ReadOnly="true" DataField="Item" />
<asp:TemplateColumn>
<HeaderTemplate>
<b>Tax </b>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox Text="Taxable" runat="server" OnCheckedChanged="Box_Click" ID="Checkbox2" NAME="Checkbox1"
AutoPostBack="true" />
<asp:Label
Text='<%# DataBinder.Eval(Container.DataItem, "Tax") %>'
runat="server" ID="Label1" NAME="Label1"/>
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox Text="Taxable" runat="server" OnCheckedChanged="Box_Click" ID="Checkbox1" NAME="Checkbox1"
AutoPostBack="true" />
</EditItemTemplate>
<FooterTemplate>
<asp:CheckBox ID="Checkbox3" AutoPostBack="True" OnCheckedChanged="Total_Click" runat="server" />
</FooterTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="Price" DataField="Price" />
</Columns>
</asp:DataGrid>
<asp:CheckBox ID="sdfsdf" runat="server" />
</form>
</body>
</HTML>
bobjeey 2003-09-15
  • 打赏
  • 举报
回复
后台循环阿
foreach(datagriditem _item in datagrid1.items)
{
checkbox cb = (checkbox)_item.findcontrl("checkbox");
cb.checked = true;
}
pengcheng 2003-09-15
  • 打赏
  • 举报
回复
怎么没人理我呢?我等着用呢?请快帮帮忙。顶一下也行啊!
zhongkeruanjian 2003-09-14
  • 打赏
  • 举报
回复
1。激发checkbox的CHANGED事件,然后在事件里做
CHECKBOX BOX = (CHECKBOX)SENDER
DATAGRIDITEM ITEM = (DATAGRIDITEM) BOX.CONTAINER
ITEM.INDEX这就是你要发现的哪一个CHECKBOX
2。在CHECKBOX的CHANGED的事件中,
做:FOR(INT I=0 ;I<DATAGRID1.ITEMS.COUNT;I++)
DATAGRIDITEM ITEM = (DATAGRIDITEM) DATAGRID1.ITEMS[I];
CHECKBOX BOX = (CHECKBOX) ITEM.CONTROLS.FINDCONTROL(“CHECKBOX_ID”)
BOX.CHECKED = ((CHECKBOX) SENDER).CHECKED;
就这样,不过语法可能有问题,你试试吧

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧