datagrid的编辑框只提供了两种,一种textbox,一种checkbox,在加上其它样式的时候怎样放置display和value值。

zwq78 2002-07-15 07:06:23
在重载datagridtextboxstyle做一个树样式,在选择后当前行放display值,由于更新数据库的是选择结点的value值,这个值放在一个隐藏列中好吗?有没有更好的方法,如cell带有一个tag值(可通过重载)。但这样做就复杂了。而且在更新回数据库又要多写很多代码。有没有更好的方法。
...全文
14 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
duanzj 2002-08-18
请参见:
http://www.c-sharpcorner.com/Code/2002/Mar/AddingControlsToDataGridTA.asp
  • 打赏
  • 举报
回复
zwq78 2002-07-16
感谢spring_ok(spring.z) ,但是你提供的是asp.net的代码,我其实问的是windowsform的datagrid,另外,你提供的代码中,好象在datagrid中并没有显示出display列,是value列吧?
  • 打赏
  • 举报
回复
spring_ok 2002-07-16
<asp:datagrid id="DataGrid1" runat="server" DataKeyField="SubProgramID" AutoGenerateColumns="false" OnUpdateCommand="DataGrid1_Update" OnCancelCommand="DataGrid1_Cancel" OnEditCommand="DataGrid1_Edit" HeaderStyle-BackColor="#aaaadd" Font-Size="8pt" Font-Name="Verdana" CellPadding="3" BorderWidth="1" BorderColor="black" OnSortCommand="DataGrid1_Sort" AllowSorting="true" OnPageIndexChanged="DataGrid1_Page" AllowPaging="true" PagerStyle-HorizontalAlign="Center" PagerStyle-NextPageText="Next" PagerStyle-PrevPageText="Prev" OnItemDataBound="DataGrid1_ItemDataBound">
<Columns>
<asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" HeaderText="Edit Sub Program" HeaderStyle-Wrap="False" ItemStyle-VerticalAlign="Top"></asp:EditCommandColumn>
<asp:TemplateColumn HeaderText="Del" ItemStyle-VerticalAlign="Top">
<ItemTemplate>
<asp:HyperLink Runat="server" ID="HyperLink1" NavigateUrl='<%# "SubProgramMan.aspx?Act=Del&SubProgramID=" + DataBinder.Eval(Container.DataItem, "SubProgramID") %>'>Del</asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="Sub Program ID" ReadOnly="True" DataField="SubProgramID" SortExpression="SubProgramID" HeaderStyle-Wrap="false" ItemStyle-VerticalAlign="Top"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Program" SortExpression="ProgramName" ItemStyle-VerticalAlign="Top">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ProgramName") %>' ID="Label4" />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" id="Edit_ProgramID"></asp:DropDownList>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ProgramID") %>' ID="Edit_ProgramID_Label" Visible=False />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Sub Program Name" SortExpression="SubProgramName" ItemStyle-VerticalAlign="Top">
<ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "SubProgramName") %>' ID="Label1" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox runat="server" id="Edit_SubProgramName" Text='<%# DataBinder.Eval(Container.DataItem, "SubProgramName") %>' Columns="40" MaxLength="100"/>
</EditItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>


code behind:
public void DataGrid1_ItemDataBound(Object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.EditItem)
{
for (int i = 0; i < e.Item.Controls.Count; i++)
{
try
{
if (e.Item.Controls[i].Controls[1].GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox tb = (TextBox)e.Item.Controls[i].Controls[1];
tb.Text = Server.HtmlDecode(tb.Text);
}
}
catch
{

}
}

//generate the list item for the "Edit_ProgramID"
int ProgramID = System.Convert.ToInt32(((Label)e.Item.FindControl("Edit_ProgramID_Label")).Text);

Digicentury.Cip.Components.Cipdb Cipdb = new Digicentury.Cip.Components.Cipdb();
DataTable dt = Cipdb.getAllPrograms();
DataView dv = dt.DefaultView;
dv.Sort = "ProgramName";

DropDownList sltProgramID = ((DropDownList)e.Item.FindControl("Edit_ProgramID"));
sltProgramID.DataTextField="ProgramName";
sltProgramID.DataValueField="ProgramID";
sltProgramID.DataSource = dv;
sltProgramID.DataBind();

for (int i=0;i<sltProgramID.Items.Count;i++)
{
if (System.Convert.ToInt32(sltProgramID.Items[i].Value) == ProgramID)
{
sltProgramID.Items[i].Selected = true;
}
}

}
}
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET技术其他语言
加入

1851

社区成员

.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
申请成为版主
帖子事件
创建了帖子
2002-07-15 07:06
社区公告
暂无公告