Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 8 của 8
  1. #1

    Load 3 table lên 1 gridview như thế nào?

    Mình có 3 bảng:
    1. Bảng nhân viên: StaffID, Name, Phone.
    2. Bảng lương: StaffID, SalaryID, Salary.
    3. Bảng chấm công: StaffID, PresenceID, Month, daysoff.

    Mình muốn đưa các thông tin (" StaffID, Name, Salary, Month, Daysoff ") từ 3 bảng trên lên 1 gridview.
    Như vậy mình phải làm thế nào.
    Bạn nào biết giúp mình với.
    Hoặc có đoạn code demo tương tự thì sent cho mình với nha.
    thanks.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi lenamshenlong
    string conn; // chuỗi kết nối cơ sở dữ liệu
    string str="SELECT NhanVien.StaffID, NhanVien.Name, Luong.Salary, ChamCong.Month, ChamCong.Daysoff FROM NhanVien LEFT OUTER JOIN Luong ON NhanVien.StaffID=Luong.StaffID LEFT OUTER JOIN ChamCong ON NhanVien.StaffID=ChamCong.StaffID ";
    SqlDataAdapter adt= new SqlDataAdapter(str, conn);
    DataSet ds = new DataSet();
    adt.Fill(ds);
    DataTable mytable = new DataTable();
    mytable = ds.Tables[0];
    conn.Close();
    GridView.DataSource = mytable;
    GridView.DataBind();
    Cảm ơn bạn rất nhiều. Mình đã làm làm được rùi.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    string conn; // chuỗi kết nối cơ sở dữ liệu
    string str="SELECT NhanVien.StaffID, NhanVien.Name, Luong.Salary, ChamCong.Month, ChamCong.Daysoff FROM NhanVien LEFT OUTER JOIN Luong ON NhanVien.StaffID=Luong.StaffID LEFT OUTER JOIN ChamCong ON NhanVien.StaffID=ChamCong.StaffID ";
    SqlDataAdapter adt= new SqlDataAdapter(str, conn);
    DataSet ds = new DataSet();
    adt.Fill(ds);
    DataTable mytable = new DataTable();
    mytable = ds.Tables[0];
    conn.Close();
    GridView.DataSource = mytable;
    GridView.DataBind();

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi kocoviecgikho
    SELECT Salary.Luong, Salary.TroCap, Presence.Thuong
    ,(isnull(Salary.Luong,0) + isnull(Salary.TroCap,0) + isnull(Presence.Thuong,0)) as TongLuong
    FROM Salary Left Join Presence on Salary.StaffID = Presence.StaffID

    Trong grid của bạn khai báo 4 cột tương ứng với 4 cột vừa select ra.
    Bạn gọi câu query này, khai báo Datatable để nhận kết quả rồi gắn nó vào datasource của grid là xong
    Cảm ơn bạn nhìu. Mình làm như hướng dẫn những vẫn báo lỗi " không tìm thấy datasource của TongLuong". Bạn hộ mình code như thế này có đúng không nhé.

    Mình tạo Store là : bangluong_Sum.
    Mã:
    Create PROCEDURE [dbo].[bangluong_Sum]
    	-- Add thông tin của bảng Presence 
    	
    	@Daysoff int,
    	@Bonus int,
    	--Add thông tin của bảng Salary
    	
    	@Salary int,
    	@Subvention int
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
       SELECT Salary.Salary, Salary.Subvention, Presence.Bonus, Presence.Daysoff
    ,(isnull(Salary.Salary,0) + isnull(Salary.Subvention,0) + isnull(Presence.Bonus,0)- ISNULL(Presence.Daysoff*20,000)) as TongLuong
    FROM Salary Left Join Presence on Salary.StaffID = Presence.StaffID
     
     end
    Còn cậu lệnh gọi store trong aspx.cs là:
    Mã:
     protected void Page_Load(object sender, EventArgs e)
        {
            SqlConnection conn = new
            SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            SqlCommand sql = new SqlCommand();
            conn.Open();
            SqlCommand sqlCmd = new SqlCommand("bangluong_Sum", conn);
            sqlCmd.CommandType = CommandType.StoredProcedure;
            String str = "select Staff.StaffID, Staff.Name, Salary.Startingdate, Salary.Salary, Salary.Subvention, Presence.Month, Presence.Daysoff,Presence.Bonus from Staff left outer  join Salary On Staff.StaffID = Salary.StaffID left outer join Presence On Staff.StaffID = Presence.StaffID";
            SqlDataAdapter adt = new SqlDataAdapter(str, conn);
            DataSet ds = new DataSet();
            adt.Fill(ds);
            DataTable mytable = new DataTable();
            mytable = ds.Tables[0];
            conn.Close();
            grdluong.DataSource = mytable;
            grdluong.DataBind();
    Trong phần code này mình có trèn cả cậu lênh load lên gridview nữa.

    Cậu lênh trên trang aspx.

    Mã:
    <asp:GridView ID="grdluong" runat="server" 
                        AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" 
                        BorderStyle="None" BorderWidth="1px" CellPadding="3" CssClass="style1" 
                        GridLines="Vertical" Height="110px" 
                        style="margin-right: 0px" Width="100%" onpageindexchanging="grdluong_PageIndexChanging"   AllowPaging="True">
                        <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
                     
                        <Columns>
                       
                            <asp:BoundField DataField="StaffID" HeaderText="Mã NV" 
                                SortExpression="StaffID" />
                            <asp:BoundField DataField="Name" HeaderText="Họ & Tên" 
                                SortExpression="Name" />
                            
                                <asp:BoundField DataField="Startingdate" HeaderText="Ngày bắt đầu" DataFormatString="{0:dd/MM/yyyy}" HtmlEncode="false" />
                           
                            
                            <asp:BoundField DataField="Month" HeaderText="Tháng" SortExpression="Month" />
                            <asp:BoundField DataField="Daysoff" HeaderText="Số ngày nghỉ" 
                                SortExpression="Daysoff" />
                            <asp:BoundField DataField="Salary" HeaderText="Lương Tháng" SortExpression="Salary" />
                            <asp:BoundField DataField="Subvention" HeaderText="Trợ cấp" 
                                SortExpression="Subvention" />
                            <asp:BoundField DataField="Bonus" HeaderText="Thưởng" SortExpression="Bonus" />
                            <asp:BoundField DataField="TongLuong" HeaderText="Tổng lương" SortExpression="" />
                        
                        </Columns>
                        
                        <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
                        <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
                        <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
                        <HeaderStyle BackColor="#000084" Font-Bold="True" ForeColor="White" />
                        <AlternatingRowStyle BackColor="#DCDCDC" />
                    </asp:GridView>

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    SELECT Salary.Luong, Salary.TroCap, Presence.Thuong
    ,(isnull(Salary.Luong,0) + isnull(Salary.TroCap,0) + isnull(Presence.Thuong,0)) as TongLuong
    FROM Salary Left Join Presence on Salary.StaffID = Presence.StaffID

    Trong grid của bạn khai báo 4 cột tương ứng với 4 cột vừa select ra.
    Bạn gọi câu query này, khai báo Datatable để nhận kết quả rồi gắn nó vào datasource của grid là xong

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Lỗi của bạn là sai từ cơ bản,
    Bên grid khai báo bao nhiêu cột, tên gì... thì trong câu select phải tuân thủ mà chọn ra cho đủ chứ.

    Tôi đã sửa bên topic Tính Tổng các cell rồi.

  7. #7
    Ngày tham gia
    Sep 2015
    Đang ở
    Hà Nội
    Bài viết
    0
    mình muốn show cái bảng BANGLUONG lên girdview sau đó mình click 1 dòng nó sẽ hiển thị thông tin Nhân Viên tương ứng xuống 1 dòng bên dưới, dạng như hiển thị như cây thư mục đó, ai biết dùng control nào có thể hiển thị đạng đó ko?

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Không có control nào làm việc đó hết.
    Muốn thì tự mình làm, cách làm thì nhiều, ví dụ như:

    Bind sẵn cái nhân viên, cho nó invisible. Click thì visible và ngược lại.

    Ghi chú: Table bảng lương khác với table nhân viên. Bảng nhân viên dài hơn => cột bảng lương giãn ra, mất thẩm mỹ.
    Nên cho nó sự kiện selected, khi select, đổ dữ liệu vào 1 cái databind bên dưới hoặc bên trên gridview bảng lương.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •