0

我一直在按照下面的代码创建一个嵌入了 css 文件的 webpart,但是 css 代码不会在 webpart 中呈现,我是使用 SharePoint 开发的新手,因此将不胜感激任何帮助:

1.  Create a webpart solution

2.  Create a child controls and add the related code in webpart cs file like below 

DataList dlNews;
Label lblNewsTitle;

protected override void CreateChildControls()
{
    // Create and add the controls that compose the
    // user interface of the Web Part. 
    Controls.Clear(); 

    dlNews = new DataList(); 

    //CSS link calling as object
    Microsoft.SharePoint.WebControls.CssLink cssLink = new    Microsoft.SharePoint.WebControls.CssLink();
    cssLink.DefaultUrl = "/_layouts/1033/styles/News.css";
    this.Page.Header.Controls.Add(cssLink);
    // Create  the Datatable
    DataTable dtItem = new DataTable();
    // send the Data items from this datatable 
    //News Datalist view
    fillResultsDatalist(dtItem);

}
private void fillResultsDatalist(DataTable dtItem)
{
    // Create an instance of the DataGrid and set its 
    // DataSource property to the supplied DataSet.
    dlNews = new DataList();
    dlNews.DataSource = dtItem;
    dlNews.CellPadding = 0;
    dlNews.CellSpacing = 0;
    dlNews.BorderWidth = 0;
    dlNews.RepeatDirection = RepeatDirection.Vertical;
    // Calling the Itemplete for data list bound columns            
    dlNews.ItemTemplate = new DatalistLabelColumn();
    // Bind the data to the DataGrid.
    dlNews.DataBind();
    //Add the DataGrid to the controls.
    Controls.Add(dlNews);
} 


3.  Add/Create the the ITemplate class 

 /// <summary>
/// Intialize the Container controls
/// </summary>
/// <param name="container"></param>
public void InstantiateIn(Control container)
{
    Label lblNewsTitle = new Label();
    lblNewsTitle.DataBinding += new EventHandler(this.BindLabelColumn);
    container.Controls.Add(lblNewsTitle); 

    Label lblNewsText = new Label(); 

    lblNewsText.DataBinding += new EventHandler(this.BindLabelColumn1);
    container.Controls.Add(lblNewsText); 

    LinkButton lnkButton = new LinkButton();
    lnkButton.DataBinding += new EventHandler(this.BindLabelColumn2);
    container.Controls.Add(lnkButton);
}
/// <summary>
/// BindLabelColumn for Title of the News
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void BindLabelColumn(object sender, EventArgs e)
{
    Label lblTitle = (Label)sender;
    DataListItem container = (DataListItem)lblTitle.NamingContainer;
    String strVals = Convert.ToString(DataBinder.Eval(((DataListItem)container).DataItem, "Titre"));
    lblTitle.Text = "<div class='HomeNewsTitle'>> " + strVals + "</div>";
}
/// <summary>
/// BindLabelColumn1 for news Description label
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void BindLabelColumn1(object sender, EventArgs e)
{
    Label lblText = (Label)sender;
    DataListItem container = (DataListItem)lblText.NamingContainer;
    String strVals = Convert.ToString(DataBinder.Eval(((DataListItem)container).DataItem, "Text"));
    strVals = Regex.Replace(strVals, @"<(.|\n)*?>", string.Empty);
    strVals = RetComments(strVals);
    lblText.Text = "<div class='HomeNewsSubTitle'>" + strVals + "</div>"; 

}
/// <summary>
/// BindLabelColumn2 for Link button
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void BindLabelColumn2(object sender, EventArgs e)
{
    LinkButton lnkButton = (LinkButton)sender;
    DataListItem container = (DataListItem)lnkButton.NamingContainer;
    String strVals = Convert.ToString(DataBinder.Eval(((DataListItem)container).DataItem, "Link"));
    lnkButton.Text = @"<div class='HomeNewsLink'> "
        + "<u style='cursor:hand;'>> Plus d'info<u>"
        + "</div><div class='HomeNewsLink1'></div>";
    lnkButton.PostBackUrl = strVals;
}
/// <summary>
/// Substring the text upto 60 characters
/// </summary>
/// <param name="strCompanyName"></param>
/// <returns></returns>
public string RetComments(string strCompanyName)
{
    string sComments = string.Empty;
    if (strCompanyName.Length > 50)
    {
        sComments = strCompanyName.Substring(0, 50).Trim() + "...";
    }
    else if (strCompanyName.Length == 0)
    {
        sComments = "--";
    }
    else
    {
        sComments = strCompanyName;
    }
    return sComments;
}


4.  Create the CSS page News.css. 

.HomeNewsTitle,.HomeNewsSubTitle,.HomeNewsLink,.HomeSeperator,.HomeNewsTitle2,.HomeNewsLink1,.HomeNewsLink2{
font-family: Trebuchet MS; 
position: relative;
float: left;
left: 0px;
width: 172px; 
}
.HomeNewsTitle,.HomeNewsTitle2{
color: #0099cc;
font-size: 13px;
}
.HomeNewsTitle2{ 
top:4px; 
}
.HomeNewsSubTitle{ 
color: #333333;
font-size: 12px;
line-height:15px; 
}
.HomeNewsLink,.HomeNewsLink1,.HomeNewsLink2{ 
color: #0099cc;
font-size: 11px;
text-decoration:underline;
text-align:right;
padding-bottom:1px; 
}
.HomeNewsLink1{
padding-bottom:10px; 
}
.HomeNewsLink2{
bottom:5px;
} 

5.
Add/Place the CSS file in to below folder
    C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\STYLES


6.
you have to call the Default URL of the CSS file path like "/_layouts/1033/styles/News.css";
#
4

0 回答 0