Tôi đang làm chương trình và load dữ liệu theo điều kiện tìm kiếm và bind ra girdview theo yêu cầu đã ok. Bây giờ tôi muốn trên màn hình hiển thị girdview nhấn button sẽ xuất dữ liệu vừa tìm được ra excel.Tôi đã thử nhiều cách nhưng không biết cách lấy datatable trả về như thế nào. Bạn nào làm được giúp mình với. Cảm ơn!

Đây là code load dữ liệu lên girdview:

Mã:

private void LoadData(string idPB, string StartDate, string ToDate)

{

hmweb.Services.cChuyenMuc mChiPhi = new hmweb.Services.cChuyenMuc();

DataTable dtb = new DataTable();

dtb = mChiPhi.ChiPhi_Search(idPB, StartDate, ToDate);

if (dtb.Rows.Count > 0)

{

pnlDanhSach.GroupingText = "Tìm thấy <u>" + dtb.Rows.Count.ToString() + "</u> mã chi phí";

grvDanhSach.DataSource = dtb;

grvDanhSach.DataBind();

//ViewState["dtList"] = dtb;

}

else

{

pnlDanhSach.GroupingText = "Tìm thấy <u>0</u> mã chi phí";

}

mChiPhi = null;

}

còn đây là code tìm kiếm:

Mã:

protected void lbtFind_Click(object sender, EventArgs e)

{

grvDanhSach.DataSource = null;

grvDanhSach.DataBind();

LoadData(cboPhongBan.SelectedValue, txtStartDate.Text.ToString(), txtToDate.Text.ToString());

}

phương thức ChiPhi_Search:

Mã:

public DataTable ChiPhi_Search(string idPB, string strStartDate,string strToDate)

{

SqlParameter[] arrParam = {

new SqlParameter("@idPB", SqlDbType.NVarChar),

new SqlParameter("@StartDate", SqlDbType.NVarChar),

new SqlParameter("@ToDate", SqlDbType.NVarChar)

};

arrParam[0].Value = idPB;

arrParam[1].Value = strStartDate;

arrParam[2].Value = strToDate;

return ThucThiStoreTraVeBang("spTB_ChiPhi_Search", arrParam);

}

StoreProcedure spTB_ChiPhi_Search

Mã:

ALTER PROCEDURE [dbo].[spTB_ChiPhi_Search]

@idPB NVARCHAR(50),

@StartDate NVARCHAR(20),

@ToDate NVARCHAR(20)

AS

BEGIN

DECLARE @SQL NVARCHAR(4000),@SQLDK NVARCHAR(1000)

SET @SQL='

SELECT tcpp.idCP,tcpp.idPB, tpb.TenPB,

tcpp.SoTien, tcpp.NoiDung,

tcpp.NgayNhap

FROM TB_ChiPhiPhong tcpp INNER JOIN

TB_PhongBan tpb ON tcpp.idPB = tpb.idPB

WHERE ''1''=''1'''

--Tìm theo mã phòng ban

IF @idPB<>''

SET @SQLDK= ' and tcpp.idPB='''+@idPB+''''

-- Tìm theo ngày

IF @StartDate<>'' OR @ToDate<>''

SET @SQLDK=@SQLDK+ ' and tcpp.NgayNhap between dbo.ChuyenTextSangDateTime('''+ @StartDate+''') and dbo.ChuyenTextSangDateTime('''+@ToDate+''' )'

EXEC (@SQL+@SQLDK)

--PRINT (@SQL+@SQLDK)

END