Thiết lập giá trị cho textbox trong RDLC dynamically

Hướng dẫn các bước thực hiện thay đổi giá trị của textbox trong RDLC report một cách tự động:

  1. Add new Report parameter, thiết lập tên cho Parameter (ví dụ Par0)
  2. Chèn thêm một textbox vào report ở vị trí mong muốn
  3. Click chuột phải trên textbox > expression > chọn Parameters và chọn tên của paramter trong danh sách các Parameter của report. Sau khi chọn, code của report như sau: =Parameters!Par0.Value
  4. Viết mã cho trong code muốn gán giá trị cho report

DataSet ds = new DataSet();
da.Fill(ds,”TenTable”);

ReportDataSource rds = new ReportDataSource(“QLLSDataSet_TenTable”, ds.Tables[“TenTable”]);

form.reportViewer1.Reset();
form.reportViewer1.LocalReport.ReportEmbeddedResource = “QLLS.rptHoChieu.rdlc”;
form.reportViewer1.LocalReport.DataSources.Clear();
form.reportViewer1.LocalReport.DataSources.Add(rds);
ReportParameter p = new ReportParameter(“Par0”, “Nội dung cần gán cho textbox”);
form.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });
form.reportViewer1.LocalReport.Refresh();
form.reportViewer1.RefreshReport();

Advertisements

Export to excel C#- Xuất dữ liệu ra excel bằng c#

Mã nguồn dưới đây hướng dẫn cách xuất dữ liệu ra excel trong C#

public void ExportToExcel(DataTable dataTable, string ExcelFilePath)
{
try
{
int ColumnsCount;

if (DataTable == null || (ColumnsCount = dataTable.Columns.Count) == 0)
throw new Exception(“ExportToExcel: Null or empty input table!\n”);

// create a new workbook
Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbooks.Add(System.Reflection.Missing.Value);

object misValue = System.Reflection.Missing.Value;

// single worksheet
Microsoft.Office.Interop.Excel._Worksheet Worksheet = (Microsoft.Office.Interop.Excel._Worksheet)Excel.ActiveSheet;

object[] Header = new object[ColumnsCount];

// column headings
for (int i = 0; i < ColumnsCount; i++)
Header[i] = dataTable.Columns[i].ColumnName;

Microsoft.Office.Interop.Excel.Range HeaderRange = Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, ColumnsCount]));
HeaderRange.Value2 = Header;
HeaderRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
HeaderRange.Font.Bold = true;

// DataCells
int RowsCount = dataTable.Rows.Count;
object[,] Cells = new object[RowsCount, ColumnsCount];

for (int j = 0; j < RowsCount; j++)
for (int i = 0; i < ColumnsCount; i++)
Cells[j, i] = dataTable.Rows[j][i];

Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[2, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[RowsCount + 1, ColumnsCount])).Value2 = Cells;

// check fielpath
if (ExcelFilePath != null && ExcelFilePath != “”)
{
try
{
Worksheet.SaveAs(ExcelFilePath, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);

Excel.Visible = true;
}
catch (Exception ex)
{
throw new Exception(“ExportToExcel: Excel file could not be saved! Check filepath.\n”
+ ex.Message);
}
}
else // no filepath is given
{
Excel.Visible = true;
}
}
catch (Exception ex)
{
throw new Exception(“ExportToExcel: \n” + ex.Message);
}
}

Gọi hàm ExportToExcel()

ExportToExcel(table, fileOnDisk);

Set SelectedIndex for DataGridViewComboBoxCell

Đoạn code sau hướng dẫn cách thiết lập DataGridViewComboBox Column trong windows Forms

DataTable dt = null;
private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();
dt.Columns.Add(“Category”);
DataRow dr = dt.NewRow();
dr[“Category”] = “Select All”;
dt.Rows.Add(dr);
DataRow row = dt.NewRow();
row[0] = “Cat 1”;
dt.Rows.Add(row);
DataRow row2 = dt.NewRow();
row2[0] = “Cat 2”;
dt.Rows.Add(row2);
DataGridViewComboBoxColumn newColumn = new DataGridViewComboBoxColumn();
newColumn.Name = “Category”;
newColumn.DataSource = dt;
newColumn.DisplayMember = “Category”;
newColumn.ValueMember = “Category”;
dataGridView1.Columns.Add(newColumn);
}

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = dt.Rows[0][0].ToString();
}

The Microsoft.Jet.OLEDB.4.0 – Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine

Khi sử dụng OLEDB gặp lỗi sau:

The Microsoft.Jet.OLEDB.4.0 hoặc Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine.

Nguyên nhân lỗi là do máy tính hiện tại đang sử dụng Offices 32 bit nhưng mặc định biên dịch của Visual Studio là Any CPU.

Để giải quyết vấn đề đó, thực hiện theo các hướng dẫn sau:

  • Chọn Project > Properties
  • Trong Tab Build, chọn Build – General
    • Platform target: chọn x86
    • Hình ảnh minh họa

target

  • Menu Build > Rebuild để biên dịch lại dựa án

Thông tin chuỗi kết nối – ConnectionString cấu hình như sau:

ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 8.0;data source= fullFileName”;

RememberMe? trong windows forms với C#

Trong cửa sổ login, thường chúng ta hay thấy có hộp checkbox cho phép người dùng ghi nhớ mật khẩu để lần sau không cần phải gõ lại, điều này sẽ thuận tiện cho người dùng khá nhiều.

Đoạn code dưới đây hướng dẫn chúng ta cách thực hiện chức năng RememberMe trong windows forms với C#

Trước hết, chọn Project Solution > Properties > Add thêm các thiết  lập:

settings

  •  Viết code để Lưu và đọc settings từ file .config

ReadSettings() method

private void ReadSettings()
{
if (Properties.Settings.Default.RememberMe == “true”)
{
tbLoginID.Text = Properties.Settings.Default.UserName;
tbPassword.Text = Properties.Settings.Default.Password;
chkRememberMe.Checked = true;
}
else
{
tbLoginID.Text = “”;
tbPassword.Text = “”;
chkRememberMe.Checked = false;
}
}

SaveSettings() method

private void SaveSettings()
{
if (chkRememberMe.Checked)
{
Properties.Settings.Default.UserName = this.tbLoginID.Text;
Properties.Settings.Default.Password = this.tbPassword.Text;
Properties.Settings.Default.RememberMe = “true”;
Properties.Settings.Default.Save();
}
else
{
Properties.Settings.Default.UserName = this.tbLoginID.Text;
Properties.Settings.Default.Password = “”;
Properties.Settings.Default.RememberMe = “false”;
Properties.Settings.Default.Save();
}
}

Code trong form load

//Code for loading form

//Read settings
ReadSettings();

Code trong nút Login của form

//Code for login function

//Save settings
SaveSettings();

 

Confirm khi xóa từ BindingNavigator

Bước 1: Thiết lập thuộc tính DeleteItem = None của điều khiển BindingNavigator

Bước 2: Double click vào DeleteItem và viết đoạn code sau vào sự kiện click của nút Delete

private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("Sure you wanna delete?", "Warning", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
    {
        bindingSource1.RemoveCurrent();
    }
}

Hiển thị ảnh trong xTraGrid column

Hướng dẫn dưới đây giúp bạn muốn hiển thị ảnh trong xTraGrid control.

Để dễ nắm bắt bài hướng dẫn, giả sử ta có bảng dữ Countries gồm 3 cột: ID, Country, Flag

Bước 1> Add xTraGrid view vào form, thiết lập các bound column cho các trường dữ liệu tương ứng

Bước 2> Add thêm một Unbound column vào xTragird, Caption = Image, FieldName = Image, UnBoundType = Object như trong hình sau

Bước 3> Chọn Views > Chọn Event và double click vào CustomUnboundColumnData

Bước 4> Viết code sau vào sự kiện CustomUnboundColumnData như sau

 string ImageDir = @"Images\";
        Hashtable Images = new Hashtable();
        string GetFileName(string quocky)
        {
            if (quocky == null || quocky == string.Empty)
                return string.Empty;
            return quocky + ".png";
        }
        private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
        {
                if (e.Column.FieldName == "Image" && e.IsGetData)
                {
                    GridView view = sender as GridView;
                    string quocky = (string)view.GetRowCellValue(e.RowHandle, "QUOC_KY");
                    string fileName = GetFileName(quocky).ToLower();
                    if (!Images.ContainsKey(fileName))
                    {
                        Image img = null;
                        try
                        {
                            string filePath = DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath, ImageDir + fileName, false);
                            img = Image.FromFile(filePath);
                        }
                        catch
                        {
                        }
                        Images.Add(fileName, img);
                    }
                    e.Value = Images[fileName];
                }
        }
Hy vọng với hướng dẫn có thể giúp bạn giải quyết được vấn đề hiển thị ảnh trong xTraGrid.