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
Đâ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