在ASP.NET 2.0中操作数据之五十五:编辑和删除现有(4)

  点击ObjectDataSource控件的“设置数据源”链接,一直点到“定义数据方法”界面。由于在CategoriesBLL里对重载的UpdateCategory方法使用了DataObjectMethodAttribute属性,UPDATE标签的下拉列表自动的选择了该方法,它包含4个输入参数(不包含Picture)。我们选择另一个包含5个输入参数的重载的UpdateCategory方法。

/uploads/allimg/200612/1J035OT_0.gif


图9:设置ObjectDataSource控件使用包含Picture参数的UpdateCategory方法

  ObjectDataSource控件现在包含了UpdateMethod属性以及相应的UpdateParameters参数集。就像在第4步提到的一样,当使用设置向导时,Visual Studio会将ObjectDataSource控件的OldValuesParameterFormatString属性设置为original_{0},这导致调用update和delete方法时出现问题。因此,要么将该属性清除,要么设该属性为{0}。

完成后,ObjectDataSource控件的声明代码看起来应该和下面的差不多:

<asp:ObjectDataSource runat="server" OldValuesParameterFormatString="{0}" SelectMethod="GetCategories" TypeName="CategoriesBLL" InsertMethod="InsertWithPicture" DeleteMethod="DeleteCategory" UpdateMethod="UpdateCategory"> <InsertParameters> <asp:Parameter Type="String" /> <asp:Parameter Type="String" /> <asp:Parameter Type="String" /> <asp:Parameter Type="Object" /> </InsertParameters> <DeleteParameters> <asp:Parameter Type="Int32" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Type="String" /> <asp:Parameter Type="String" /> <asp:Parameter Type="String" /> <asp:Parameter Type="Object" /> <asp:Parameter Type="Int32" /> </UpdateParameters> </asp:ObjectDataSource>

要启用编辑功能,从GridView控件的智能标签里选“编辑”。这将设置CommandField的ShowEditButton属性为true,结果是为每行添加一个Edit按钮(当记录处于编辑状态时,将呈现为Update和Cancel按钮)

/uploads/allimg/200612/1J0409552_0.gif


图10:启用GridView控件的编辑功能

  从浏览器查看该页面,点某条记录的Edit按钮。CategoryName和Description列呈现为一个文本框。由于BrochurePath TemplateField没有EditItemTemplate模板,所以它依旧呈现其ItemTemplate模板——一个指向brochure的链接。Picture列呈现为一个文本框,并且该Picture ImageField的Text属性被指派为DataImageUrlField值,在这里,即CategoryID.

/uploads/allimg/200612/1J0352950_0.gif


图11:BrochurePath列没有编辑界面

定制BrochurePath编辑界面

我们可以为BrochurePath TemplateField创建一个编辑界面,我们可以选择:

.维持原样
.上传新的brochure以作更新
.将brochure删除(这样一来,类就没有对应的brochure了)

我们也应该更新Picture ImageField的编辑界面,不过我们将放在第7步来讨论。

  在GridView控件的智能标签里选择“编辑模板”,再从下拉列表里选BrochurePath TemplateField的EditItemTemplate模板。在模板里添加一个RadioButtonList Web控件,其ID为BrochureOptions;AutoPostBack属性为true.再在属性窗口里点Items属性的椭圆型区域,进入ListItem Collection Editor界面,分别添加值为1,2,3的选项:

.Use current brochure
.Remove current brochure
.Upload new brochure

设第一个ListItem的Selected属性为true.

/uploads/allimg/200612/1J0364G1_0.gif


图12:为RadioButtonList控件添加3个ListItems

在RadioButtonList控件下面,添加一个FileUpload控件,ID为BrochureUpload,设其Visible属性为false。

/uploads/allimg/200612/1J03E036_0.gif


图13:在EditItemTemplate模板里添加RadioButtonList和FileUpload控件

RadioButtonList控件为用户提供了3个选择,只有当选择“Upload new brochure”时, FileUpload控件才会展现出来。为此,我们为RadioButtonList控件的SelectedIndexChanged事件创建事件处理器,如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjwypy.html