Cara: Mengikat Kontrol Formulir Windows ke Nilai Database DBNull
Saat Anda mengikat kontrol Formulir Windows ke sumber data dan sumber data mengembalikan DBNull nilai, Anda dapat mengganti nilai yang sesuai tanpa menangani, memformat, atau mengurai peristiwa. Properti NullValue akan dikonversi DBNull ke objek tertentu saat memformat atau mengurai nilai sumber data.
Contoh
Contoh berikut menunjukkan cara mengikat DBNull nilai dalam dua situasi berbeda. Yang pertama menunjukkan cara mengatur NullValue untuk properti string; yang kedua menunjukkan cara mengatur NullValue untuk properti gambar.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace DBNullCS
{
public class Form1 : Form
{
public Form1()
{
this.Load += new EventHandler(Form1_Load);
}
// The controls and components we need for the form.
private Button button1;
private PictureBox pictureBox1;
private BindingSource bindingSource1;
private TextBox textBox1;
private TextBox textBox2;
// Data table to hold the database data.
DataTable employeeTable = new DataTable();
void Form1_Load(object sender, EventArgs e)
{
// Basic form setup.
this.pictureBox1 = new PictureBox();
this.bindingSource1 = new BindingSource();
this.textBox1 = new TextBox();
this.textBox2 = new TextBox();
this.button1 = new Button();
this.pictureBox1.Location = new System.Drawing.Point(20, 20);
this.pictureBox1.Size = new System.Drawing.Size(174, 179);
this.textBox1.Location = new System.Drawing.Point(25, 215);
this.textBox1.ReadOnly = true;
this.textBox2.Location = new System.Drawing.Point(25, 241);
this.textBox2.ReadOnly = true;
this.button1.Location = new System.Drawing.Point(200, 103);
this.button1.Text = "Move Next";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.pictureBox1);
this.ResumeLayout(false);
this.PerformLayout();
// Create the connection string and populate the data table
// with data.
string connectionString = "Integrated Security=SSPI;" +
"Persist Security Info = False;Initial Catalog=Northwind;" +
"Data Source = localhost";
SqlConnection connection = new SqlConnection();
connection.ConnectionString = connectionString;
SqlDataAdapter employeeAdapter =
new SqlDataAdapter(new SqlCommand("Select * from Employees", connection));
connection.Open();
employeeAdapter.Fill(employeeTable);
// Set the DataSource property of the BindingSource to the employee table.
bindingSource1.DataSource = employeeTable;
// Set up the binding to the ReportsTo column.
Binding reportsToBinding = textBox2.DataBindings.Add("Text", bindingSource1,
"ReportsTo", true);
// Set the NullValue property for this binding.
reportsToBinding.NullValue = "No Manager";
// Set up the binding for the PictureBox using the Add method, setting
// the null value in method call.
pictureBox1.DataBindings.Add("Image", bindingSource1, "Photo", true,
DataSourceUpdateMode.Never, new Bitmap(typeof(Button), "Button.bmp"));
// Set up the remaining binding.
textBox1.DataBindings.Add("Text", bindingSource1, "LastName", true);
}
// Move through the data when the button is clicked.
private void button1_Click(object sender, EventArgs e)
{
bindingSource1.MoveNext();
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
}
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Data.SqlClient
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Public Sub New()
End Sub
' The controls and components we need for the form.
Private WithEvents button1 As Button
Private pictureBox1 As PictureBox
Private bindingSource1 As BindingSource
Private textBox1 As TextBox
Private textBox2 As TextBox
' Data table to hold the database data.
Private employeeTable As New DataTable()
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
Handles Me.Load
' Basic form setup.
Me.pictureBox1 = New PictureBox()
Me.bindingSource1 = New BindingSource()
Me.textBox1 = New TextBox()
Me.textBox2 = New TextBox()
Me.button1 = New Button()
Me.pictureBox1.Location = New System.Drawing.Point(20, 20)
Me.pictureBox1.Size = New System.Drawing.Size(174, 179)
Me.textBox1.Location = New System.Drawing.Point(25, 215)
Me.textBox1.ReadOnly = True
Me.textBox2.Location = New System.Drawing.Point(25, 241)
Me.textBox2.ReadOnly = True
Me.button1.Location = New System.Drawing.Point(200, 103)
Me.button1.Text = "Move Next"
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Controls.Add(Me.button1)
Me.Controls.Add(Me.textBox2)
Me.Controls.Add(Me.textBox1)
Me.Controls.Add(Me.pictureBox1)
Me.ResumeLayout(False)
Me.PerformLayout()
' Create the connection string and populate the data table
' with data.
Dim connectionString As String = "Integrated Security=SSPI;" & _
"Persist Security Info = False;Initial Catalog=Northwind;" _
& "Data Source = localhost"
Dim connection As New SqlConnection()
connection.ConnectionString = connectionString
Dim employeeAdapter As New SqlDataAdapter _
(New SqlCommand("Select * from Employees", connection))
connection.Open()
employeeAdapter.Fill(employeeTable)
' Set the DataSource property of the BindingSource to the employee table.
bindingSource1.DataSource = employeeTable
' Set up the binding to the ReportsTo column.
Dim reportsToBinding As Binding = _
textBox2.DataBindings.Add("Text", bindingSource1, "ReportsTo", _
True)
' Set the NullValue property for this binding.
reportsToBinding.NullValue = "No Manager"
' Set up the binding for the PictureBox using the Add method, setting
' the null value in method call.
pictureBox1.DataBindings.Add("Image", bindingSource1, "Photo", _
True, DataSourceUpdateMode.Never, _
New Bitmap(GetType(Button), "Button.bmp"))
' Set up the remaining binding.
textBox1.DataBindings.Add("Text", bindingSource1, "LastName", True)
End Sub
' Move through the data when the button is clicked.
Private Sub button1_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles button1.Click
bindingSource1.MoveNext()
End Sub
<STAThread()> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
End Class
Jenis properti terikat dan NullValue properti harus sama atau kesalahan akan dihasilkan, dan tidak ada nilai lebih lanjut NullValue yang akan diproses. Dalam situasi ini, pengecualian tidak akan dilemparkan.
Mengompilasi Kode
Contoh ini membutuhkan:
- Referensi ke rakitan System, System.Data, System.Drawing dan System.Windows.Forms.
Baca juga
.NET Desktop feedback
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk