• SQL Server Full Text Search - Cấu hình và thực thi cơ bản

    SQL Server Full Text Search - Cấu hình và thực thi cơ bản


    Full-text search là một cơ chế mà sql server cho phép bạn tìm kiếm một từ hay một cụm từ một cách hiệu quả và nhanh chóng. Trong bài đầu về chủ đề này tôi giới thiệu, hướng dẫn cấu hình và thực thi cơ bản nhất để bạn hiểu về SQL Server Full Text Search
  • Tải tiếp dữ liệu kiểu Facebook với jQuery AJAX trong ASP.Net và SQL server

    Tải tiếp dữ liệu kiểu Facebook với jQuery AJAX trong ASP.Net và SQL server


    Các bạn khi vào Facebook xem nội dung và kéo thanh scroll bar của trình duyệt xuống đáy màn hình thì dữ liệu tiếp theo sẽ tự động load tiếp, đó là chủ đề tôi thấy nhiều bạn cần nhưng chưa thực hiện được. Trong bài viết này tôi sẽ hướng dẫn bạn sử dụng jQuery AJAX trong ASP.Net.
  • Asp.net - Sử dụng lồng các control

    Asp.net - Sử dụng lồng các control


    Khi xây dựng ứng dụng hay website, nhiều khi bạn phải sử dùng lồng các control để hiển thị dữ liệu. Việc dùng lồng control với gridview thì hmweb cũng đã có khá nhiều bài viết có sử dụng điều này. Ở bài này tôi hướng dẫn bạn dùng DataList lồng trong ListView như demo
  • ASP.net - Webservice :: Mã hóa, giải mã và giao tiếp Client - Server

    ASP.net - Webservice :: Mã hóa, giải mã và giao tiếp Client - Server


    hmweb- Trong bài viết trước về webservice "Tìm hiểu về Web Services - asp.net C#". Mình có nói về webservice và tạo một webservice đơn giản. Trong bài này mình sẽ giới thiệu về cách mã hóa dữ liệu và giao tiếp giữa Server và Client thông quan webservice
  • Kỹ thuật phân trang dữ liệu SQL server trong trang Asp.net

    Kỹ thuật phân trang dữ liệu SQL server trong trang Asp.net


    Phân trang dữ liệu là đề tài được nói đến khá nhiều, Nếu dữ liệu của bạn ít bạn có thể dùng Tools có sẵn của Visual Studio, Nhưng có điều với các công cụ có sẵn này khi bạn dùng thì lệnh truy vấn dữ liệu bạn luôn phải truy vấn toàn bộ và Bind vào một control, như vậy nếu dữ liệu của bạn nhiều thì đây không phải là giải pháp tốt.

Tabbed content autochange với asp.net Csharp và SQL server

Tabbed content được sử dụng rất phổ biến trong các website hiện nay, nó giúp tiết kiệm không gian website. Trong bài viết này tôi hướng dẫ bạn xây dựng ứng dụng Tabbed content ngoài các yêu cầu của Tabbed nó còn tự động chuyển Tab sau một khoảng thời gian định trước. Demo Tabbed, Tabbed content, asp.net, Csharp, SQL server,

Đây là câu hỏi của một bạn trong diễn đàn hmweb hỏi (phiên bản cũ cũng đã có bạn hỏi), Thấy rằng đây cũng là vấn đề khá hay và có thể áp dụng khi xây dựng website nên tôi viết bài hướng dẫn hy vọng giúp ích cho các bạn.

Tabbed này được áp dụng từ trang kollermedia.at bạn có thể vào trang đó download mã nguồn mẫu về xem code html và js họ trình bày. Vấn đề ở đây là ta cần hiểu và áp dụng nó bằng việc lấy dữ liệu từ cơ sở dữ liệu đúng như yêu cầu câu hỏi của diễn đàn đặt ra.

Để cho ngắn gọn khi trình bày tôi sẽ không trình bày các style sheet nữa, bạn có thể download nó ở cuối bài viết, Trong style khi bạn download về có đoạn bạn cần chú ý đó là các tabcontenti.(i ở đây là các chỉ số tương ứng với số Tabbed của ta) Code javascript bạn cần chú ý các điểm sau:

<script type="text/javascript">
    var tablink_idname = new Array("tablink")
    var tabcontent_idname = new Array("tabcontent") 
    var tabcount = new Array('<%=hd1.Value %>')
    var loadtabs = new Array("1")  
    var autochangemenu = 1;
    var changespeed = 3;
    var stoponhover = 0;
    function easytabs(menunr, active) {if (menunr == autochangemenu){currenttab=active;}if ((menunr == autochangemenu)&&(stoponhover==1)) {stop_autochange()} else if ((menunr == autochangemenu)&&(stoponhover==0))  {counter=0;}menunr = menunr-1;for (i=1; i <= tabcount[menunr]; i++){document.getElementById(tablink_idname[menunr]+i).className='tab'+i;document.getElementById(tabcontent_idname[menunr]+i).style.display = 'none';}document.getElementById(tablink_idname[menunr]+active).className='tab'+active+' tabactive';document.getElementById(tabcontent_idname[menunr]+active).style.display = 'block';}var timer; counter=0; var totaltabs=tabcount[autochangemenu-1];var currenttab=loadtabs[autochangemenu-1];function start_autochange(){counter=counter+1;timer=setTimeout("start_autochange()",1000);if (counter == changespeed+1) {currenttab++;if (currenttab>totaltabs) {currenttab=1}easytabs(autochangemenu,currenttab);restart_autochange();}}function restart_autochange(){clearTimeout(timer);counter=0;start_autochange();}function stop_autochange(){clearTimeout(timer);counter=0;}
    window.onload=function(){
    var menucount=loadtabs.length; var a = 0; var b = 1; do {easytabs(b, loadtabs[a]);  a++; b++;}while (b<=menucount);
    if (autochangemenu!=0){start_autochange();}
    }
</script>

Trong đó:
- new Array("value"): value là số Tabbed (Số động theo số bản ghi Category của csdl) ở đây tôi gán bằng giá trị thẻ HiddenField sẽ được truyền Value trong code C#
- loadtabs: Tabbed mặc định khi trang được Load
- changespeed: Thời gian tự chuyển giữa các Tab (3~ 3 giây)

Trong trang aspx bạn cần các control sau đẻ hiển thị:

<asp:HiddenField ID="hd1" runat="server" />
<asp:Literal ID="ltlContent" runat="server" />

Giả xử CSDL của ta có 2 bảng là TB_Category và TB_News quan hệ 1-n qua trường CateID. Ta cần viết các hàm như sau:

+ Hàm thực thi câu truy vấn trả về DataTable

/// <summary>
/// Hàm truy vấn dữ liệu trả về bảng
/// </summary>
private DataTable GetData(string sConn, string sQuery)
{
    SqlDataAdapter da = new SqlDataAdapter(sQuery, sConn);
    DataTable dtSelect = new DataTable();
    da.Fill(dtSelect);
    return dtSelect;
}

+ Hàm trả về danh sách 10 bài viết mới nhất theo chuyên mục (CateID)

- Hàm này trả về là 1 string sử dụng cho các Tabcontent, mỗi tabcontent tương ứng của 1 chuyên mục và ở đây tôi list ra 10 bản ghi mới nhất của chuyện mục đó,

private string GetContentOfTab(int cateID, string sConn)
{
    string strHTML = "";
    string sSQL = @"SELECT TOP 10 nw.NewsID, nw.Title 
        FROM TB_News nw
        WHERE nw.CateID=" + cateID.ToString() + " AND nw.Status=1 ORDER BY nw.NewsID DESC";
    DataTable dtb = GetData(sConn, sSQL);
    if (dtb.Rows.Count > 0)
    {
        foreach (DataRow dr in dtb.Rows)
        {
            strHTML += "<li><a href='?NewsID=" + dr["NewsID"] + "'> &#9642; " + dr["Title"] + "</a></li>";
        }
    }
    else
    {
        strHTML = "Thông tin đang cập nhật";
    }
    return strHTML;
}

+ Hàm hiển thị dữ liệu Tabbed lên trình duyệt:

Đây là hàm bạn cần chú ý nhất, tôi sẽ giải thích kỹ để bạn dễ áp dụng.

Trước tiên là phần Stylesheet bạn thấy rằng số các tabcontent là động (Theo số Category của csdl) và nó cũng được đánh chỉ số từ 1 đến n, ta cần có style chung cho các tabcontent này dạng vì vậy tôi khai báo biết sStyle để tạo các style này và số các style phải theo số Category nên cần được đặt trong vòng lặp và với dòng lệnh sStyle += "#tabcontent" + i.ToString() + ",";

Tiếp theo các Tabbed được tạo theo CateName và các sự kiện javascript onmouseover và onfocus, onclick (khi ta di chuột qua và click chuột thì sẽ chọn Tabbed đó active) cũng được đánh theo các chí số (Bạn xem code html khi download ở kollermedia.at về sẽ thấy điều này) do vậy ta cũng cần tạo các chỉ số cho các sự kiện này.

Các Tabcontent được đưa vào các thẻ div với id là tabcontenti theo các chỉ số tương ứng, bên trong các thẻ div này là nội dung của các tabbed và được gán bằng hàm GetContentOfTab ở trên

private string sGetContent(string sConn)
{
    string strHTML = "";
    string sSQL = "SELECT TOP 5 * FROM TB_CateGory ORDER BY idCate";
    DataTable dtb = GetData(sConn, sSQL);
    int i = 1;
    string sStyle = "<style>";
    if (dtb.Rows.Count > 0)
    {
        hd1.Value = dtb.Rows.Count.ToString();
        strHTML += @"<div class='menu'>
        <ul>";
        foreach (DataRow dr in dtb.Rows)
        {
            sStyle += "#tabcontent" + i.ToString() + ",";
            strHTML += "<li><a href='#' onmouseover=\"easytabs('1', '" + i.ToString() + "');\" onfocus=\"easytabs('1', '" + i.ToString() + "');\" onclick='return false;' title='' id=\"tablink" + i.ToString() + "\">" + dr["CateName"] + "</a></li>";
            i++;
        }
        sStyle = sStyle.Substring(0, sStyle.LastIndexOf(','));
        sStyle += "{border:1px solid #DEDEDE; width:698px; padding:10px 0px 10px 0px; font-size:12px; margin: -1px 0px 1px 0px; }</style>";
        strHTML += @"</ul></div>";
        i = 1;
        foreach (DataRow dr2 in dtb.Rows)
        {
            strHTML += "<div id=\"tabcontent" + i.ToString() + "\">" + GetContentOfTab(int.Parse("0" + dr2["CateID"].ToString()), sConn) + "</div>";
            i++;
        }
    }
    return sStyle+strHTML;
}

+ Hàm Page_Load:

protected void Page_Load(object sender, EventArgs e)
{
    string connectString = @"Server =.\SQL2005;Initial Catalog=DB_News;User ID=abc;Password=***";
    ltlContent.Text = sGetContent(connectString);
}

 Download code bài viết tại đây: http://hmweb.com.vn/demo/Tabbed-content-autochange.rar

Các vấn đề thảo luận về bài này bạn nêu tại diễn đàn: http://diendan.hmweb.com.vn/yaf_postsm613_Huong-dan-su-dung-chuc-nang-Tab-Control-trong-asp-net-C.aspx



Bài viết cùng chủ đề

    WEB HAY

    Bóng đá trực tuyến - bongda.hmclip.vn
    Khó nhịn cười - Xả stress
    Chuyên trang Hỏi đáp Tinmoi.vn
    Xem phim Mỹ Nam Nhà Bên