www.baike369.com
百科369 > ASP.NET教程 > 使用ASP.NET的ControlParameter对象

使用ASP.NET的ControlParameter对象


使用ASP.NET的ControlParameter对象

ControlParameter对象可以表示一个控件的属性值。实际上可以使用它来表示任意一个和SqlDataSource控件位于同一页面的控件的值。

ControlParameter对象除具备父类Parameter的所有属性外,还具备下面的属性:

  • ControlID:该参数表示控件的ID。
  • PropertyName:该参数表示属性的名称。

实例1

在ShowControlParameter.aspx网页中包含DropDownList控件和DetailsView控件。当在DropDownList控件中选择一部电影时,这部电影的详细数据就会显示在DetailsView控件中。程序代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowControlParameter.aspx.cs" Inherits="ShowControlParameter" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>使用ASP.NET的ControlParameter对象-www.baike369.com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <asp:DropDownList
        id="ddlMovies"
        DataSourceID="srcMovies"
        DataTextField="Title"
        DataValueField="Id"
        Runat="server">
    </asp:DropDownList>

    <asp:Button
        id="btnSelect"
        Text="选择"
        Runat="server" />

    <hr />

    <asp:DetailsView
        id="dtlMovie"
        DataSourceID="srcMovieDetails"
        Runat="server">
    </asp:DetailsView>

    <asp:SqlDataSource
        id="srcMovies"
        SelectCommand="SELECT Id,Title FROM Movies"
        ConnectionString="<%$ ConnectionStrings:Movies %>"
        Runat="server">
    </asp:SqlDataSource>

    <asp:SqlDataSource
        id="srcMovieDetails"
        SelectCommand="SELECT * FROM Movies WHERE Id=@Id"
        ConnectionString="<%$ ConnectionStrings:Movies %>"
        Runat="server">
        <SelectParameters>
            <asp:ControlParameter Name="Id" ControlID="ddlMovies" PropertyName="SelectedValue" />
        </SelectParameters>
    </asp:SqlDataSource>

    </div>
    </form>
</body>
</html>

执行结果如下:

使用ASP.NET的ControlParameter对象的操作效果

ShowControlParameter.aspx页面中的第二个SqlDataSource控件包含一个控件参数对象。这个控件参数对象表示在DropDownList控件中选择电影的ID。

在使用控件参数对象时,必须要把此对象的ControlID属性设为同页面控件的ID。另外,并不必设定此对象的PropertyName属性。如果没有设定PropertyName,控件参数对象就会自动查找用ControlValueProperty属性装饰的属性。DropDownList控件的这个属性就是SelectedValue,所以在ShowControlParameter.aspx页面中就不需要设定PropertyName属性了。


实例2

因为Page类是从Control类继承的,所以可以使用ControlParameter对象来表示Page属性的值。

在ShowPageControlParameter.aspx网页中包含一个简单的留言本。当用户向留言本中新增一条留言时,用户的远程IP地址也会随留言内容保存起来。程序代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowPageControlParameter.aspx.cs" Inherits="ShowPageControlParameter" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    public string IPAddress
    {
        get { return Request.UserHostAddress; }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>ASP.NET中一个简单的留言本-www.baike369.com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <asp:FormView
        id="frmGuestBook"
        DataSourceID="srcGuestBook"
        DefaultMode="Insert"
        runat="server">
        <InsertItemTemplate>
        <asp:Label
            id="lblName"
            Text="您的姓名:"
            AssociatedControlID="txtName"
            Runat="server">
        </asp:Label>
        <asp:TextBox
            id="txtName"
            Text='<%# Bind("Name") %>'
            Runat="server">
        </asp:TextBox>

        <br /><br />

        <asp:Label
            id="Label1"
            Text="您的留言:"
            AssociatedControlID="txtComments"
            Runat="server">
        </asp:Label>

        <br />
        <asp:TextBox
            id="txtComments"
            Text='<%# Bind("Comments") %>'
            TextMode="MultiLine"
            Columns="60"
            Rows="4"
            Runat="server">
        </asp:TextBox>

        <br /><br />

        <asp:Button
            id="btnSubmit"
            Text="提交"
            CommandName="Insert"
            Runat="server" />
        </InsertItemTemplate>
    </asp:FormView>

    <hr />

    <asp:GridView
        id="grdGuestBook"
        DataSourceID="srcGuestBook"
        Runat="server">
    </asp:GridView>
    <asp:SqlDataSource
        id="srcGuestBook"
        SelectCommand="SELECT * FROM GuestBook ORDER BY Id DESC"
        InsertCommand="INSERT GuestBook (IPAddress,Name,Comments)
            VALUES (@IPAddress,@Name,@Comments)"
        ConnectionString="<%$ ConnectionStrings:GuestBook %>"
        Runat="server">
        <InsertParameters>
            <asp:ControlParameter Name="IPAddress" ControlID="__page" PropertyName="IPAddress" />
        </InsertParameters>
    </asp:SqlDataSource>

    </div>
    </form>
</body>
</html>

执行结果如下:

ASP.NET中一个简单的留言本的操作效果

控件参数的ControlID属性值为__page,这个值为Page类自动生成的ID,而PropertyName属性的值为IPAddress,这个属性是在同一页面中定义的。

Copyright© 2011-2016 www.baike369.com All Rights Reserved