|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。datagrid|创立 在服装论坛中我看到过很多不异或类似的成绩:我如何在我的DataGrid的每行中放置反省框、文本框等等?如何更新它们的值?谜底相当复杂,在这篇文章中,我将向你展现若何完成它。
咱们都晓得,DataGrid是一个功效十分壮大的东西。依据我的经历,在90%以上的工夫中, DataGrid 都被用来显示数据,并能够一次编纂一行数据。 而某些时分,能够需求一次编纂多行,乃至是一切数据。一个实践的例子就是在网上发卖物品的使用法式中, 顾客能够一主要变动他们篮子中的一种或多种物品,单击反省框移去他们不想要的商品。
构思
在这个例子中,我写了一个复杂的WebForm来办理存储在XML中的接洽人列表。 这个需求长短常复杂的:具有添加新接洽人,编纂/删除现有接洽人的才能。用户可以一次修正或删除多个接洽人,我也答应用户按他们选定的列来对数据网格停止排序。
我的例子是用 C# 编写的。 假如你更喜好这些代码的VB版本,鄙人载文件中有这两种格局的代码。
Contacts.xml
这个例子中的 XML 数据文件十分复杂直不雅。因为它十分复杂,所以我没有创立计划。
<?xml version="1.0" standalone="yes"?>
<Contacts>
<Contact>
<Email>myaddress@mycompany.com</Email>
<FirstName>John</FirstName>
<LastName>Doe</LastName>
</Contact>
<Contact>
<Email>youraddress@yourcompany.com</Email>
<FirstName>Jane</FirstName>
<LastName>Doe</LastName>
</Contact>
</Contacts>
ContactList.aspx
设置 WebForm 十分复杂。我放置了一个新的 DataGrid 到我的窗体中,而且设置它为4列,第一列都包括了用来删除接洽人的反省框。你会注重到我在这里做的次要任务就是以模板列( TemplateColumn)的模式创立了每列。 这答应我放置文本框和反省框对象到数据模板(ItemTemplate)中 . 这是一个在网格每行中显示文本之外的其它器材的技能。 除此之外,你还会注重到我利用 FooterTemplate 来使新建接洽人变得复杂而直不雅。
我也包括了一个链接按钮(LinkButton),用来保留用户所做的修正及删除操作。但它其实不用来添加新接洽人。添加新接洽人的操作由最初一列的页脚模板中链接按钮(LinkButton)来完成。
<asp:datagrid id="dgContacts" runat="server" ShowFooter="True" AllowSorting="True" Forefont color="Black" GridLines="None" CellPadding="2" Backfont color="LightGoldenrodYellow" BorderWidth="1px" Borderfont color="Tan" Width="499px" AutoGenerateColumns="False" DataKeyField="Email">
<SelectedItemStyle Forefont color="GhostWhite" Backfont color="DarkSlateBlue"></SelectedItemStyle>
<AlternatingItemStyle Backfont color="PaleGoldenrod"></AlternatingItemStyle>
<HeaderStyle Font-Bold="True" Backfont color="Tan"></HeaderStyle>
<FooterStyle Backfont color="Tan"></FooterStyle>
<Columns>
<asp:TemplateColumn SortExpression="FirstName" HeaderText="First Name">
<ItemTemplate>
<asp:TextBox id=First runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.FirstName") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="NewFirst" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="LastName" HeaderText="Last Name">
<ItemTemplate>
<asp:TextBox id=Last runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.LastName") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="NewLast" runat="server" Width="109px"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn SortExpression="Email" HeaderText="Email">
<ItemTemplate>
<asp:TextBox id=Email runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Email") %>'>
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="NewEmail" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Delete Contact">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:CheckBox Runat="server" ID="chkDelete"></asp:CheckBox>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center"></FooterStyle>
<FooterTemplate>
<asp:LinkButton Runat="server" Text="Add" CommandName="Add" ID="Linkbutton1" NAME="Linkbutton1"></asp:LinkButton>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</</p> 源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多. 纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码 |
|