Archive for June, 2009

embedding flash in server control

Problem:

When you got your website (aspx website), especially when you already put url rewriting, you want to embed flash ( doesnt matter if its swf or flv)
You need to have relative path, starting with ("~/" ) in the url.

Solution:
you can put the code in your server control, so it will be easier to integrate

FlashPlayer.ascx
<object  classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="745" height="181" id="header" align="middle">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="allowFullScreen" value="false" />
    <param  name="movie" value='<asp:Literal ID="Literal1" runat="server"></asp:Literal>' /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />
    <embed src='<asp:Literal ID="Literal2" runat="server"></asp:Literal>' quality="high" bgcolor="#ffffff" width="745" height="181" name="header" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_nl" />
    </object>

and in the FlashPlayer.ascx.cs

  protected void Page_Load(object sender, EventArgs e)
    {

        Literal1.Text = Page.ResolveUrl("~/yourpath");
        Literal2.Text = Page.ResolveUrl("~/yourpath");
   }

and you will got flash playing! enjoy ^_^

================================

thank to Marc Neeft, hereby his input :

it would be even more powerful when you add the movieUrl, width and height as properties of the usercontrol:

private string movieUrl = String.empty;

private int movieWidth = 0;

private int movieHeight = 0;

protected void Page_Load(object sender, EventArgs e)

{

// todo: check if url, width and height are set, if not, throw exception

Literal1.Text = Page.ResolveUrl(movieUrl);

Literal2.Text = Page.ResolveUrl(movieUrl);

Literal3.Text = movieWidth;

Literal4.Text = movieHeight;

}

public string MovieUrl

{

get { return movieUrl; }

set { movieUrl = value; }

}

public string MovieWidth

{

get { return movieWidth; }

set { movieWidth = value; }

}

public int MovieHeight

{

get { return movieHeight; }

set { movieHeight = value; }

}

Of course you need to add the 2 extra literals and the errorchecking yourself but you get the general idea.

<uc:FlashPlayer id="Flashplayer" runat="server" MovieUrl="~/flash
/movie.flv
" MovieWidth="300" MovieHeight="150" />

Repeater inside repeater asp net

Problem :

Putting repeater inside repeater and take ID of parent repeater to bind the  datasourse.

Solution:
hereby the example of code:

in .aspx
<asp:Repeater ID="Repeater2" runat="server"
    onitemdatabound="Repeater2_ItemDataBound">
    <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Eval("Tag") %>'></asp:Label></asp:HyperLink>
        <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            (<asp:Label ID="CountID" runat="server" Text='<%# Eval("Expr1") %>'></asp:Label>)
            </ItemTemplate>
        </asp:Repeater>
        <br />
    </ItemTemplate>
</asp:Repeater>

in .aspx cs

private DataTable getDataTableforRepeater2(int TagID)
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["yourconnectionName"].ConnectionString;

        SqlCommand command = new SqlCommand();
        command.Connection = conn;
        command.CommandText = "sql command";
        DataTable t = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter();

        adapter.SelectCommand = command;
        adapter.Fill(t);

        return t;
    }
    protected void Repeater2_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Repeater Repeater1 = e.Item.FindControl("Repeater1") as Repeater;

            int TagID = int.Parse(DataBinder.Eval(e.Item.DataItem, "TagID").ToString());

            if (TagID != null)
            {
                DataTable t = getDataTableforRepeater2(TagID);
                if (t.Rows.Count > 0)
                {
                    Repeater1.DataSource = t;
                    Repeater1.DataBind();
                }
            }

        }

Get Adobe Flash playerPlugin by wpburn.com wordpress themes