June - 2010 29

Cài đặt email cho graffiticms

Trước tiên login vào GraffitiCMS với user admin của mình. Sau đó chọn phần Site Optons -> Email Settings. Sau đó nhập vào các giá trị như hình sau:

Sau đó click vào Update Settings để cập nhật lại dữ liệu và nhấn nút Send email để send test email đến.

Check email test xem có send được không ? nếu send được thì OK.

Lời bình
Không có lời bình
Chủ đề
GraffitiCMS, Tips
Đánh dấu
tips
 
June - 2010 22

SQLServer - Gộp nhiều hàng thỏa điều kiện thành một hàng

Giả sử bạn có cơ sở dữ liệu và có mối quan hệ như sau


hình 1

Khi đó nếu bạn dùng query sau

Select c.CityID, d.DistrictID, c.CityName, d.DistrictName
From Cities c 
Inner Join Districts d On c.CityID = d.CityID
Order By c.CityID Asc

Và khi đó bạn sẽ có kết quả như sau


hình 2

Tuy nhiên vì lý do nào đó, bạn muốn có kết quả như sau (tức là gộp các dòng Quận của một Thành Phố thành một dòng)


hình 3

Đến đây các bạn có 2 cách để giải quyết

  • Cách 1: dùng câu lệnh SQL trên để select ra một DataTable, sau đó ở code-behide quét từng dòng, so sánh, nối chuỗi, ... và làm đủ thứ sau cho ra kết quả tương ứng. Bài viết này Phước không bàn đến trường hợp này.
  • Cách 2: dùng lệnh SQL, và khi đó câu lệnh SQL như sau
-- Trước tiên select các data cần thiết vào object Data với lệnh With của SQLServer
With Data As (
	Select c.CityID, d.DistrictID, c.CityName, d.DistrictName
	From Cities c 
	Inner Join Districts d On c.CityID = d.CityID
    -- Order By c.CityID Asc /* Mệnh đề With không support Order By */
)
-- Sau đó dùng object Data này và kết hợp với hàm Stuff để gộp nhiều hàng thành một hàng lại
Select Distinct -- dùng Distinct để lọc các hàng trùng nhau
		data.CityID, 
		data.CityName,
		Stuff((Select ', ' + DistrictName 
			   From Data data1 -- Chú ý là alias data1 để link với data
			   Where data.CityID = data1.CityID 
			   For XML path ('')
               ), 1, 1, '') As DistrictNames
From Data data
Order By data.CityID Asc

Và với câu lệnh SQL trên (kết hợp: With và Stuff) khi đó bạn đã có dữ liệu mong muốn như hình 3

Vậy nếu bạn muốn có dữ liệu như hình 4, thì câu lệnh SQL phải như thế nào ? Câu trả lời Phước để dành cho các bạn ở phần bình luận nhe.

Và cuối cùng bạn có thể tham khảo lệnh With và hàm Stuff bằng cách click vào link tương ứng.

Lời bình
Không có lời bình
Chủ đề
Tips
Đánh dấu
sqlserver, tips
 
June - 2010 15

aspx và các tag inline

<%-- ... --%>

  • Tên: Server Comment
  • Công dụng: dùng để comment các code theo dạng comment của server ngôn ngữ lập trình. Các đoạn code trong comment này không được trình biên dịch thực thi.
  • Ghi chú: Không được lồng (nested) các server comment này với nhau
  • Ví dụ:
<%-- 
<asp:button runat="server" id="MyButton" 
  OnClick="MyButton_Click" />
--%>

<!-- -->

  • Tên: HTML Comment
  • Công dụng: dùng để comment code HTML, khi này trình biên dịch sẽ render dữ liệu trong phần code comment này cũng như thực thi các hàm (nếu có)...
  • Ghi chú: hạn chế dùng HTML comment, nên dùng Server Comment
  • Ví dụ:
<!-- <b>This HTML code you can see in the view source page</b> -->

<% ... %>

  • Tên: Embedded Code Blocks
  • Công dụng: thực thi một tập lệnh của ngôn ngữ lập trình mà trang aspx đang chọn.
  • Ghi chú:
  • Ví dụ:
<% if (User.IsInRole("admin")) { %>
  You can see this
<% } else { %>
  You are no admin fool!
<% } %>

<%= ... %>

  • Tên: Displaying
  • Công dụng: dùng để render ra 1 chuỗi (hoặc 1 số) tại vị trí để tag này.
  • Ghi chú:
  • Ví dụ:
The Date is now <%= DateTime.Now.ToShortDateString() %>

Tag <%= .. %> có thể tương đương với tag <% .. %> bằng cách sau

<script runat="server">
public void CurrentDateTime()
{
    Response.Wirte(DateTime.Now.ToShortDateString());
}
</script>
The Date is now <% CurrentDateTime(); %>

<%# ... %>

  • Tên: Data-Bind
  • Công dụng: kết hợp với hàm Eval() hoặc Bind() để lấy dữ liệu từ các control dữ liệu như: DataGrid, ListView, Repeater, ....
  • Ghi chú:
  • Ví dụ:
<asp:Repeater ID="rptMeetings" DataSourceID="meetings" runat="server">
    <ItemTemplate>
        <%# Eval("MeetingName") %>
    </ItemTemplate>
</asp:Repeater>

<%$ ... %>

  • Tên: ASP.NET expression
  • Công dụng: sử dụng như một biểu thức, và thường đi với các DataSource
  • Ghi chú:
  • Ví dụ:

+ Nội dụng file web.config

<configuration>
  <connectionStrings>
    <add name="NorthwindConnectionString1" 
      connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
    <!-- additional settings -->
</configuration>

+ Nội dung file aspx

<asp:SqlDataSource ID="SqlDataSource1" Runat="server" 
    SelectCommand="SELECT * FROM [Employees]"
    ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>">
</asp:SqlDataSource>

<%@ ... %>

  • Tên: Directive Syntax
  • Công dụng: dùng để khai báo các dẫn xuất, và thường được đặt ở đầu trang aspx
  • Ghi chú:
  • Ví dụ:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>
<%@ Register TagPrefix="wp" Namespace="CustomWebParts" %>

<%: ... %>

  • Tên: code-nugget expressions
  • Công dụng: tương đương tag <%= ... %>, tuy nhiên lúc này asp.net engine tự động encoding phần output
  • Ghi chú: Chỉ có tác dụng đối với asp.net 4. (và những ai lập trình asp.net 4 trở lên thì khuyên dùng tag <%: .. %> này hơn là dùng tag: <%= ... %>
  • Ví dụ: hai ví dụ 1 và 2 dưới đây là tương đương nhau, tuy nhiên chỉ có ví dụ 2 thì phải chạy trên nền .NET 4

+ Ví dụ 1

<div>
    <%= Server.HtmlEncode("This is a test <s.t.r.i.n.g>") %>
</div>

+ Ví dụ 2

<div>
    <%: "This is a test <s.t.r.i.n.g>" %>
</div>

Hy vọng bài viết giúp bạn hiễu rõ thêm đôi chút về các tag inline của asp.net. (Tuy nhiên nếu Phước thiếu tag inline nào, bạn có thể comment cho Phước biết được không ? thanks.)

Lời bình
Không có lời bình
Chủ đề
Tips
Đánh dấu
asp-net, tips
 
Trang sau
Trang trước
  • RSS

    phuocle.net RSS
  • Chủ đề

    • Blog
    • GraffitiCMS
      • Plugins
      • Tips
    • Tips
  • Đánh dấu

    asp-net google seo sqlserver tips
  • Liên kết

    • http://www.pnasoft.com
    • http://www.1kho.com
  • http://phuocle.net