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>
<asp:Parameter 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]" <wa****@online.microsoft.comwrote in message
news:bu**************@TK2MSFTNGXA01.phx.gbl...
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:
<asp:DataGrid ID="grid1" runat="server"
DataSourceID="SqlDataSource1"></asp:DataGrid>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$
ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="SELECT * FROM [Order Details] WHERE ([OrderID] =
@OrderID)" OnSelecting="SqlDataSource1_Selecting">
<SelectParameters>
<asp:Parameter 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 (wa****@online.microsoft.com, 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.