Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > feeding a SQLDataSource embedded in an .ascx user control a custom property assigned to that control

Reply
Thread Tools

feeding a SQLDataSource embedded in an .ascx user control a custom property assigned to that control

 
 
Guest
Posts: n/a
 
      07-12-2006
I'm building some user controls. I very much like how you can build custom
properties to be bound to a user control, and how instances of that control
will show those custom properties in the VS.NET IDE.

I've made a user control -- let's call it MyUserControl.ascx -- with a
DataGrid and an SqlDataSource. The SqlDataSource that loads content by
categoryID.

I've defined a property on MyUserControl.ascx called ContentCategoryID.

I want custom property ContentCategoryID to be the parameter that filters
SqlDataSource. Can anyone tell me what is the cleanest/best way to do this?

Thanks,
-KF


 
Reply With Quote
 
 
 
 
Walter Wang [MSFT]
Guest
Posts: n/a
 
      07-13-2006
Hi,

Thank you for your post.

Based on my understanding, your question is how to pass the UserControl's
property to its SqlDataSource as one of its select parameters. If I've
misunderstood anything, please feel free to post here.

I recommend you handle the SqlDataSource's Selecting event and set the
select parameter value there. Also, you need to call DataGrid.DataBind()
after the UserControl's property gets changed.

I'm using SqlServer NorthWind database "Order Details" as an example:

<aspataGrid ID="grid1" runat="server"
DataSourceID="SqlDataSource1"></aspataGrid>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$
ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT * FROM [Order Details] WHERE ([OrderID] =
@OrderID)" OnSelecting="SqlDataSource1_Selecting">
<SelectParameters>
<asparameter Name="OrderID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>


public int OrderID
{
get
{
object o = ViewState["OrderID"];
if (o == null) return 0;
return (int) o;
}
set
{
ViewState["OrderID"] = value;
grid1.DataBind();
}
}
protected void SqlDataSource1_Selecting(object sender,
SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@OrderID"].Value = OrderID;
}

Hope this helps. Please feel free to post here if anything is unclear.

Regards,
Walter Wang (, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.

 
Reply With Quote
 
 
 
 
Guest
Posts: n/a
 
      07-15-2006
Walter,

Your post gave me the information I needed to accomplish what I set out to
do, which was to develop a generic control to list administrative overviews,
and to call different content categories based on a custom parameter fed in
through the IDE. Thanks as always for your comprehensive help.

Anyone following in my footsteps is encouraged to be mindful of the
distinctions between SqlDataSource <SelectParameters> -- there are different
types ("Parameter", "CommandParameter") and if you sub in the wrong one from
older example code, things will break

Thanks again for your help.

-KF



"Walter Wang [MSFT]" <> wrote in message
news:...
> Hi,
>
> Thank you for your post.
>
> Based on my understanding, your question is how to pass the UserControl's
> property to its SqlDataSource as one of its select parameters. If I've
> misunderstood anything, please feel free to post here.
>
> I recommend you handle the SqlDataSource's Selecting event and set the
> select parameter value there. Also, you need to call DataGrid.DataBind()
> after the UserControl's property gets changed.
>
> I'm using SqlServer NorthWind database "Order Details" as an example:
>
> <aspataGrid ID="grid1" runat="server"
> DataSourceID="SqlDataSource1"></aspataGrid>
> <asp:SqlDataSource ID="SqlDataSource1" runat="server"
> ConnectionString="<%$
> ConnectionStrings:NorthwindConnectionString %>"
> SelectCommand="SELECT * FROM [Order Details] WHERE ([OrderID] =
> @OrderID)" OnSelecting="SqlDataSource1_Selecting">
> <SelectParameters>
> <asparameter Name="OrderID" Type="Int32" />
> </SelectParameters>
> </asp:SqlDataSource>
>
>
> public int OrderID
> {
> get
> {
> object o = ViewState["OrderID"];
> if (o == null) return 0;
> return (int) o;
> }
> set
> {
> ViewState["OrderID"] = value;
> grid1.DataBind();
> }
> }
> protected void SqlDataSource1_Selecting(object sender,
> SqlDataSourceSelectingEventArgs e)
> {
> e.Command.Parameters["@OrderID"].Value = OrderID;
> }
>
> Hope this helps. Please feel free to post here if anything is unclear.
>
> Regards,
> Walter Wang (, remove 'online.')
> Microsoft Online Community Support
>
> ==================================================
> When responding to posts, please "Reply to Group" via your newsreader so
> that others may learn and benefit from your issue.
> ==================================================
>
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>



 
Reply With Quote
 
Guest
Posts: n/a
 
      07-15-2006
This is the full code for what I described in my earlier scenario for anyone
trying to duplicate what I've done. Note also that the DataBind() method
needs to go in the page load event.

In the .ascx:
<asp:SqlDataSource OnSelecting="SqlDataSource1_Selecting"
ID="SqlDataSource1" runat="server" ConnectionString="<%$ [redacted for
security, whatever references your connection string] %>"
SelectCommand="SELECT [Con_ContentID], [Sta_StatusID], [Con_InsertDate],
[Con_PubDate], [Con_Title], [Con_Body], [Con_Url], [Con_Icon] FROM
[Contentitems] WHERE ([Con_CategoryID] = @Con_CategoryID)">
<SelectParameters>
<asparameter Name="Con_CategoryID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>

In the codebehind for the .ascx:
public partial class AdminControls_OverviewByContentCategory :
System.Web.UI.UserControl
{

private int contentcategoryid;

public int ContentCategoryID
{
get
{
return contentcategoryid;
}
set
{
contentcategoryid = value;

}
}

protected void SqlDataSource1_Selecting(object sender,
SqlDataSourceSelectingEventArgs e)
{
e.Command.Parameters["@Con_CategoryID"].Value = ContentCategoryID;
}

protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataBind();
}

}

"Walter Wang [MSFT]" <> wrote in message
news:...
> Hi,
>
> Thank you for your post.
>
> Based on my understanding, your question is how to pass the UserControl's
> property to its SqlDataSource as one of its select parameters. If I've
> misunderstood anything, please feel free to post here.
>
> I recommend you handle the SqlDataSource's Selecting event and set the
> select parameter value there. Also, you need to call DataGrid.DataBind()
> after the UserControl's property gets changed.
>
> I'm using SqlServer NorthWind database "Order Details" as an example:
>
> <aspataGrid ID="grid1" runat="server"
> DataSourceID="SqlDataSource1"></aspataGrid>
> <asp:SqlDataSource ID="SqlDataSource1" runat="server"
> ConnectionString="<%$
> ConnectionStrings:NorthwindConnectionString %>"
> SelectCommand="SELECT * FROM [Order Details] WHERE ([OrderID] =
> @OrderID)" OnSelecting="SqlDataSource1_Selecting">
> <SelectParameters>
> <asparameter Name="OrderID" Type="Int32" />
> </SelectParameters>
> </asp:SqlDataSource>
>
>
> public int OrderID
> {
> get
> {
> object o = ViewState["OrderID"];
> if (o == null) return 0;
> return (int) o;
> }
> set
> {
> ViewState["OrderID"] = value;
> grid1.DataBind();
> }
> }
> protected void SqlDataSource1_Selecting(object sender,
> SqlDataSourceSelectingEventArgs e)
> {
> e.Command.Parameters["@OrderID"].Value = OrderID;
> }
>
> Hope this helps. Please feel free to post here if anything is unclear.
>
> Regards,
> Walter Wang (, remove 'online.')
> Microsoft Online Community Support
>
> ==================================================
> When responding to posts, please "Reply to Group" via your newsreader so
> that others may learn and benefit from your issue.
> ==================================================
>
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>



 
Reply With Quote
 
Walter Wang [MSFT]
Guest
Posts: n/a
 
      07-16-2006
Hi,

Thank you for your update and sample code. I'm sure that this will benefit
the community a lot.

Have a nice day!


Regards,
Walter Wang (, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
problem in running a basic code in python 3.3.0 that includes HTML file Satabdi Mukherjee Python 1 04-04-2013 07:48 PM
How to make a div ignore a property assigned by body tag? falconer HTML 2 08-10-2006 10:43 PM
ObjectDataSource feeding off a SqlDataSource Keith Patrick ASP .Net Web Controls 0 12-16-2005 12:08 AM
Compilation fails when a windows form user control is assigned a strong name but it refers to an activex control which does not have strong name ashish_gokhale ASP .Net Web Controls 0 05-05-2005 01:38 PM
Page Load fired 3 times Web user control is embedded in a custom control Thomas Ekegren ASP .Net Building Controls 0 09-03-2003 05:37 PM



Advertisments