如何将Hashtable绑定到RadioButtonList Web控件

< HTML >
    
< HEAD >
        
< title > 将 Hashtable 绑定到 RadioButtonList Web 控件示例 </ title >
        
< script language = " C# "  runat = " server " >
            
void  Page_Load( object  sender, System.EventArgs e)
            
{
                
if(!IsPostBack)
                
{
                    
// 创建 Hashtable 对象并填充数据
                    Hashtable hash = new Hashtable();
                    hash.Add(
"北京""010");
                    hash.Add(
"广州""020");
                    hash.Add(
"上海""021");
                    hash.Add(
"天津""022");
                    hash.Add(
"成都""028");
                    hash.Add(
"济南""0531");

                    
// 进行数据绑定
                    RadioButtonList1.DataSource = hash;
                    RadioButtonList1.DataTextField 
= "Key";
                    RadioButtonList1.DataValueField 
= "Value";
                    RadioButtonList1.DataBind();
                }

            }

            
            
void  SubmitBtn_Click( object  sender, System.EventArgs e)
            
{
                Label1.Text 
= "区号是:" + RadioButtonList1.SelectedValue;
            }

        
        
</ script >
    
</ HEAD >
    
< body >
        
< form id = " Form1 "  method = " post "  runat = " server " >
            
< h3 > 将Hashtable绑定到RadioButtonList Web控件示例 </ h3 >
            
< asp:RadioButtonList id = " RadioButtonList1 "  runat = " server " ></ asp:RadioButtonList >
            
< asp:Button id = " SubmitBtn "  runat = " server "  Text = " 查看区号 "  OnClick = " SubmitBtn_Click " ></ asp:Button >
            
< br >
            
< br >
            
< asp:Label id = " Label1 "  runat = " server " > Label </ asp:Label >
        
</ form >
    
</ body >
</ HTML >




有关Hashtable

表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。
有关此类型所有成员的列表,请参阅 Hashtable 成员。
System.Object
   System.Collections.Hashtable
      System.Data.PropertyCollection
[Visual Basic]
<Serializable>

Public   Class Hashtable
   
Implements IDictionary, ICollection, IEnumerable, ISerializable, _
   _
   IDeserializationCallback, ICloneable


[C#]
[Serializable]

public   class  Hashtable : IDictionary, ICollection, IEnumerable,
   ISerializable, IDeserializationCallback, ICloneable


[C++]
[Serializable]
public __gc class Hashtable : public IDictionary, ICollection,
   IEnumerable, ISerializable, IDeserializationCallback, ICloneable
[JScript]

public
   Serializable
class Hashtable implements IDictionary, ICollection,
   IEnumerable, ISerializable, IDeserializationCallback, ICloneable


线程安全
要支持一个或多个编写器,Hashtable 上的所有操作都必须通过 Synchronized 方法返回的包装执行。
通过集合枚举在本质上不是一个线程安全的过程。甚至在对集合进行同步处理时,其他线程仍可以修改该集合,这会导致枚举数引发异常。若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。
备注
每个元素是一个存储在 DictionaryEntry 对象中的键/值对。键不能为空引用(Visual Basic 中为 Nothing),但值可以。
用作 Hashtable 中的键的对象必须实现或继承 Object.GetHashCode 和 Object.Equals 方法。如果键相等性只是引用相等性,这些方法的继承实现将满足需要。此外,如果该键存在于 Hashtable 中,那么当使用相同参数调用这些方法时,这些方法必须生成相同的结果。只要键对象用作 Hashtable 中的键,它们就必须是永远不变的。
当把某个元素添加到 Hashtable 时,将根据键的哈希代码将该元素放入存储桶中。该键的后续查找将使用键的哈希代码只在一个特定存储桶中搜索,这将大大减少为查找一个元素所需的键比较的次数。
Hashtable 的加载因子确定元素与存储桶的最大比率。加载因子越小,平均查找速度越快,但消耗的内存也增加。默认的加载因子 1.0 通常提供速度和大小之间的最佳平衡。当创建 Hashtable 时,也可以指定其他加载因子。
当向 Hashtable 添加元素时,Hashtable 的实际加载因子将增加。当实际加载因子达到此加载因子时,Hashtable 中存储桶的数目自动增加到大于当前 Hashtable 存储桶数两倍的最小质数。
Hashtable 中的每个键对象必须提供其自己的哈希函数,可通过调用 GetHash 访问该函数。但是,可将任何实现 IHashCodeProvider 的对象传递到 Hashtable 构造函数,而且该哈希函数用于该表中的所有对象。
[Visual Basic, C#] C# 语言中的 foreach 语句(在 Visual Basic 中为 for each)需要集合中每个元素的类型。由于 Hashtable 的每个元素都是一个键/值对,因此元素类型既不是键的类型,也不是值的类型。而是 DictionaryEntry 类型。例如:
[C#]
foreach (DictionaryEntry myDE in myHashtable) {...}
[Visual Basic]
Dim myDE As DictionaryEntry
For Each myDE In myHashtable
   ...
Next myDE
[Visual Basic, C#] foreach 语句是对枚举数的包装,它只允许从集合中读取,不允许写入集合。
示例
下列示例说明如何创建和初始化 Hashtable,以及如何打印出其键和值。
[Visual Basic]

Imports  System
Imports  System.Collections
Imports  Microsoft.VisualBasic

Public   Class SamplesHashtable    
    
    
Public Shared Sub Main()
        
        
' Creates and initializes a new Hashtable.
        Dim myHT As New Hashtable()
        myHT.Add(
"First""Hello")
        myHT.Add(
"Second""World")
        myHT.Add(
"Third""!")
        
        
' Displays the properties and values of the Hashtable.
        Console.WriteLine("myHT")
        Console.
WriteLine("  Count:    {0}", myHT.Count)
        Console.
WriteLine("  Keys and Values:")
        PrintKeysAndValues(myHT)
    
End Sub

    
    
Public Shared Sub PrintKeysAndValues(myList As Hashtable)
        
Dim myEnumerator As IDictionaryEnumerator = myList.GetEnumerator()
        Console.
WriteLine(ControlChars.Tab + "-KEY-" + ControlChars.Tab _
           
+ "-VALUE-")
        
While myEnumerator.MoveNext()
            Console.
WriteLine(ControlChars.Tab + "{0}:" + ControlChars.Tab _
               
+ "{1}", myEnumerator.Key, myEnumerator.Value)
        
End While
        Console.
WriteLine()
    
End Sub

End Class


'  This code produces the following output.
'
 
'
 myHT
'
   Count:    3
'
   Keys and Values:
'
     -KEY-    -VALUE-
'
     Third:    !
'
     Second:    World
'
     First:    Hello

[C#]

using  System;
using  System.Collections;
public   class  SamplesHashtable   {

   
public static void Main()  {

      
// Creates and initializes a new Hashtable.
      Hashtable myHT = new Hashtable();
      myHT.Add(
"First""Hello");
      myHT.Add(
"Second""World");
      myHT.Add(
"Third""!");

      
// Displays the properties and values of the Hashtable.
      Console.WriteLine( "myHT" );
      Console.WriteLine( 
"  Count:    {0}", myHT.Count );
      Console.WriteLine( 
"  Keys and Values:" );
      PrintKeysAndValues( myHT );
   }



   
public static void PrintKeysAndValues( Hashtable myList )  {
      IDictionaryEnumerator myEnumerator 
= myList.GetEnumerator();
      Console.WriteLine( 
"\t-KEY-\t-VALUE-" );
      
while ( myEnumerator.MoveNext() )
         Console.WriteLine(
"\t{0}:\t{1}", myEnumerator.Key, myEnumerator.Value);
      Console.WriteLine();
   }

}

/* 
This code produces the following output.

myHT
  Count:    3
  Keys and Values:
    -KEY-    -VALUE-
    Third:    !
    Second:    World
    First:    Hello
*/

你可能感兴趣的:(RadioButton)