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

CLR-Stored Procedures

CLR stored procedures là gì?

CLR stored procedures là stored procedure được tạo bởi managed code (C#, VB.NET, …)

Khi nào sử dụng CLR stored procedures?

Khi stored procedure không viết được với T-SQL

Cách tạo clr stored procedures?

Các bước dưới đây hướng dẫn cách xây dựng CLR – Stored Procedured

1. Tạo Database project trong C# và viết mã như sau

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void SqlStoredProcedure1 ()
{
SqlPipe pipe = SqlContext.Pipe;
pipe.Send(“Hello world”);
}
}

2. Viết mã trong SQL Server

clrSP

DeSerialize Json data – firebase

Mã nguồn dưới đây hướng dẫn cách Deserialize Json data đọc từ firebase

Tạo lớp Firebaseroot và các thuộc tính như dưới đây

public class Todo
{
public string name;
public int priority;
}

Khai báo FirebaseConfig

IFirebaseConfig config = new FirebaseConfig
{
AuthSecret = “your-secret-key”,
BasePath = “your-firebase-url/”
};

Mã nguồn để đọc dữ liệu từ firebase và deserialize

IFirebaseClient client = new FirebaseClient(config);
FirebaseResponse response = client.Get(“todo”);//Key to read from Firebase

Dictionary<string, Todo> entryDict = JsonConvert.DeserializeObject<Dictionary<string, Todo>>(response.Body);

List<Todo> entries = entryDict.Select(x => x.Value).ToList();

foreach (var item in entries)
{
this.listBox1.Items.Add(item.name); //Add item into ListBox1
}

Sử dụng Firebase với FireSharp

Các bước dưới đây hướng dẫn bạn sử dụng Firebase với FireSharp trong .NET (C#,VB.NET).

Các bước thực hiện:

  • Cài đặt thư viện FireSharp bằng cách mở Package NuGet Manager Console

Install-Package FireSharp

  • Thiết lập cấu hình và khai báo đối tượng FirebaseClient
 IFirebaseConfig config = new FirebaseConfig
  {
     AuthSecret = "your_firebase_secret",
     BasePath = "https://yourfirebase.firebaseio.com/"
  };
IFirebaseClient  client = new FirebaseClient(config);
  •  Thêm dữ liệu vào Firebase với PUSH method
var todo = new Todo
 {
 name = "Execute PUSH",
 priority = 2
 };
 PushResponse response = client.Push("Key", todo);
  • Update firebase data với Set method
 var todo = new Todo
 {
 name = "Execute SET",
 priority = 2
 };
 SetResponse response = client.Set("key", todo);
  • Get data from Firebase
 FirebaseResponse response = await _client.GetAsync("todos/set");
 Todo todo=response.ResultAs<Todo>(); //The response will contain the data being retreived

Partial Method

Partial method là cách định nghĩa phương thức và cài đặt phương thức ở 2 nơi khác nhau.

Partial methods cho phép người thiết kế định nghĩa các phương thức và để lại phần cài đặt cho các lập trình viên có thể cài đặt hoặc không cài đặt partial method đó. Nếu lập trình viên không cài đặt các partial methods thì khi biên dịch, compiler sẽ remove partial method đó đi. Dưới đây là các điều kiện bắt buộc phải tuân theo khi sử dụng partial methods:

  • Signatuares trong tất cả các khai báo phải giống nhau
  • Kiểu trả về luôn là void
  • Không cho phép sử dụng access modifiers (Partial method luôn ngầm định private)

Ví dụ dưới đây minh họa định nghĩa partial method trong partial class

namespace PM
{
 partial class A
 {
 partial void OnSomethingHappened(string s);
 }
 // This part can be in a separate file.
 partial class A
 {
 // Comment out this method and the program
 // will still compile.
 partial void OnSomethingHappened(String s)
 {
 Console.WriteLine("Something happened: {0}", s);
 }
 }
}

Extension methods

Extension methods cho phép bạn thêm các phương thức vào các kiểu dữ liệu hiện có mà không cần tạo một kiểu dẫn xuất mới, biên dịch lại hoặc sửa đổi kiểu gốc.

Extension methods khai báo static, nhưng chúng được gọi như instance methods

Extension method là phương thức static của lớp static, từ khóa this áp dụng cho tham số đầu tiên của  phương thức. Kiểu của tham số đầu sẽ được mở rộng phương thức đó.

public static class ExtensionMethodDemo
{
    public static string UppercaseFirstLetter(this string value)
    {
        // Uppercase the first letter in the string.
        if (value.Length > 0)
        {
            char[] array = value.ToCharArray();
            array[0] = char.ToUpper(array[0]);
            return new string(array);
        }
        return value;
    }
}

class Program
{
    static void Main()
    {
        // Use the string extension method on this value.
        string value = "hello world!";
        value = value.UppercaseFirstLetter();
        Console.WriteLine(value);
    }
}