在onItemCreated事件里面写: if e.item.cells.count=i then ctype(e.item.controls(i),tablecell).text=value end if
难怪。 for (int i = 0; i < DataGrid_1.Items.Count; i++) { HyperLink link = (HyperLink)DataGrid_1.Items[i].Cells[2].Controls[0]; Response.Write(link.Text + "<br>"); }
TextBox box=(TextBox)DataGrid1.Items[n].Cells[i].Controls[0];
box.Text=="";
e.item.cells(x).text
表示每行的某列
如果要分别取某行某列则需要循环了
我用了你的方法后,可以更改他的值,可却无法取到,我一加上225行那句话他就报错,错误信息如下:System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名:index
源错误:
行 223:DataGrid_1.Items[i].Cells[2].Text = i.ToString();
行 224:}
行 225: Label1.Text = DataGrid_1.Items[0].Cells[2].Text;
我写了如下代码:DataGrid_1.DataBind();int i,j;
for (i=0; i<DataGrid_1.Items.Count;i++)
{
for(j=0;j<ds_code.Tables["Code_Speciality"].Rows.Count;j++)
{
if(DataGrid_1.Items[i].Cells[2] == ds_code.Tables["Code_Speciality"].DefaultView[j]["Id"].ToString())
{
DataGrid_1.Items[i].Cells[2].Text = ds_code.Tables["Code_Speciality"].DefaultView[j]["Name"].ToString();
break;
}
}
}我跟踪了一下DataGrid_1.Items[i].Cells[2]的值,始终是空的,这是为什么呀?
for (i=0; i<DataGrid_1.Items.Count;i++)
{
DataGrid_1.Items[i].Cells[2].Text = ds_code.Tables["Code_Speciality"].DefaultView[100]["Name"].ToString();
}
却可以对DataGrid_1.Items[i].Cells[2].Text 赋值,为什么可以赋值却不能取值啊??
或者你先贴出DataGrid的结构代码,也就是:
<asp:DataGrid ....>
...
</asp:DataGrid>
<Columns>
<asp:BoundColumn DataField="No" HeaderText="信息编号" ItemStyle-Wrap="False">
<HeaderStyle HorizontalAlign="Center" ForeColor="White" width="15%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="Coiid" HeaderText="单位代码" ItemStyle-Wrap="False">
<HeaderStyle HorizontalAlign="Center" ForeColor="White" Width="1%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
</asp:BoundColumn>
<asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="No" DataNavigateUrlFormatString="../interface/postwhole.aspx?id={0}" DataTextField="Type" SortExpression="No" HeaderText="岗位名称" ItemStyle-Wrap="False">
<HeaderStyle HorizontalAlign="Center" ForeColor="White" width="35%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
</asp:HyperLinkColumn>
<asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="Coiid" DataNavigateUrlFormatString="../interface/companywhole.aspx?Coiid={0}" DataTextField="Coiid" SortExpression="No" HeaderText="单位名称" ItemStyle-Wrap="False">
<HeaderStyle HorizontalAlign="Center" ForeColor="White" width="34%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
</asp:HyperLinkColumn>
<asp:BoundColumn DataField="RegDate" HeaderText="登记日期" ItemStyle-Wrap="False" DataFormatString="{0:yyyy-MM-dd}">
<HeaderStyle HorizontalAlign="Center" ForeColor="White" Width="15%" VerticalAlign="Middle" BackColor="#804042"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:datagrid>因为“岗位名称”取到的是代码,我要把他的代码值取出来,然后做处理后再赋值回去,现在的问题就是只能赋值但却不能取值。BTY:真是麻烦icyer()你了,谢谢先
if e.item.cells.count=i then
ctype(e.item.controls(i),tablecell).text=value
end if
for (int i = 0; i < DataGrid_1.Items.Count; i++)
{
HyperLink link = (HyperLink)DataGrid_1.Items[i].Cells[2].Controls[0];
Response.Write(link.Text + "<br>");
}
{
link = (HyperLink)DataGrid_1.Items[i].Cells[2].Controls[0];
for(j=0;j<ds_code.Tables["Code_Speciality"].Rows.Count;j++) {
if(link.Text == ds_code.Tables["Code_Speciality"].DefaultView[j]["Id"].ToString())
{
DataGrid_1.Items[i].Cells[2].Text = ds_code.Tables["Code_Speciality"].DefaultView[j]["Name"].ToString();
break;
}
}
}
link.Text = ds_code.Tables["Code_Speciality"].DefaultView[j]["Name"].ToString();
结帖。