在DataGrid中用模版列绑定的数据,如何点击一行同时取出多个关键字??急,在线等....

zmpanda 2004-08-11 03:53:52
在DataGrid中用模版列绑定的数据,如何点击一行同时取出多个关键字??急,在线等....DataGrid1.Items[DGExt1.SelectedIndex].Cells[1].Text方法不行..
...全文
104 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
acewang 2004-08-11
  • 打赏
  • 举报
回复
前台:
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" runat="server" Width="464px">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.IntegerValue") %>' ID ="Label2">
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn Text="选择" CommandName="Select"></asp:ButtonColumn>
</Columns>
</asp:DataGrid>
<asp:Label id="Label1" runat="server">Label</asp:Label>
</form>
后台:
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
DataGrid1.DataSource = CreateDataSource();
DataGrid1.DataBind();
}
}
ICollection CreateDataSource()
{
DataTable dt = new DataTable();
DataRow dr;

dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));

for (int i = 0; i < 5; i++)
{
dr = dt.NewRow();

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

dt.Rows.Add(dr);
}

DataView dv = new DataView(dt);
return dv;
}

private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
Label lbl = (Label)DataGrid1.Items[DataGrid1.SelectedIndex].FindControl("Label2");
Label1.Text = lbl.Text;
}

private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName == "Select")
{
DataGrid1.SelectedIndex = e.Item.ItemIndex;
DataGrid1.DataSource = CreateDataSource();
DataGrid1.DataBind();
}
}
darren_zhu_NZ 2004-08-11
  • 打赏
  • 举报
回复
具体大概是这样的(code不在身边),如果你是静态column的话

<asp:DataGrid id="dg" ...... CommandEventArgs='<%# DataBinder.Eval(Container.DataItem, "名称1")>+<%# DataBinder.Eval(Container.DataItem, "名称2")> ' ... OnClick="ItemClicked">

在code里:

public void ItemClicked(object sender, DataGridCommandEventArgs e){
string[] values=e.CommandEventArgs.Split("+");
}
ofei 2004-08-11
  • 打赏
  • 举报
回复
设置CommandEventArg
darren_zhu_NZ 2004-08-11
  • 打赏
  • 举报
回复
在Html页面DataGrid那里添加一个CommandEventArgs='<#% .... 填上代码放上你需要的值,比如说你要拿四个string,最简单的就是把自己string用特殊符号连起来 >'

然后在
private void DataGrid1_SelectedIndexChanged(object sender, DataGridCommandEventArgs e)里就能调用e.CommandEventArgs了,拿出的就是先前你所放进去的值.
howie 2004-08-11
  • 打赏
  • 举报
回复
private void DataGrid1_SelectedIndexChanged(object sender, DataGridCommandEventArgs e)
zmpanda 2004-08-11
  • 打赏
  • 举报
回复
“System.EventArgs”并不包含对“Item”的定义 报错!!!!!!DataGrid1_SelectedIndexChanged事件中是不是不可以这么写?
zmpanda 2004-08-11
  • 打赏
  • 举报
回复
如过个Label控件呢?可以吗??
acewang 2004-08-11
  • 打赏
  • 举报
回复
假设第二列中的Label(里面只有一个Label控件):
((Label)e.Item.Cells[1].Controls[0]).Text
zmpanda 2004-08-11
  • 打赏
  • 举报
回复
在选择一行记录是.DataGrid1_SelectedIndexChanged事件中.当我选择一行记录后,如何取出多个关键字?strCH_TECHNICS_ID=((Label)e.Item.FindControl("CH_TECHNICS_ID1")).Text.Trim();和DataGrid1.Items[DGExt1.SelectedIndex].Cells[1].Text的方法是不行的.
acewang 2004-08-11
  • 打赏
  • 举报
回复
你在什么事件中?最好贴点相关代码

62,046

社区成员

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

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

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

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