2010-02-27 17 views
5

स्थानीय बनाना कैसे यह मेरा datatableDataTable स्तंभ नाम

public static DataTable GetTableForApproval() 
{ 
    using (var connection = Utils.Database.GetConnection()) 
    using (var command = new SqlCommand("SELECT [UserID], [Username], " + 
      "[Email], [Role], [Date] FROM [Users] WHERE [Role] = @role", 
      connection)) 
    { 
     command.Parameters.AddWithValue("@role", "Waiting"); 
     using (var reader = command.ExecuteReader()) 
     { 
      var table = new DataTable(); 

      table.Columns.Add("UserID", typeof(int)); 
      table.Columns.Add("Name", typeof(string)); 
      table.Columns.Add("Email", typeof(string)); 
      table.Columns.Add("Role", typeof(string)); 
      table.Columns.Add("Registration date", typeof(DateTime)); 

      if (reader != null) 
      { 
       while (reader.Read()) 
       { 
        table.Rows.Add((int)reader["UserID"], 
         (string)reader["Username"], (string)reader["Email"], 
         (string)reader["Role"], (DateTime)reader["Date"]); 
       } 
      } 
      return table; 
     } 
    } 
}  

मैं कॉलम के नाम स्थानीय बनाना चाहते हैं। क्या आप मुझे बता सकते हैं कि मैं यह कैसे कर सकता हूं? मैंने अपने .aspx पृष्ठों को स्थानीयकृत किया, लेकिन मुझे नहीं पता कि .cs फ़ाइलों में टेक्स्ट को स्थानीयकृत कैसे करें।

+0

आप कॉलम नामों को स्थानीयकृत क्यों करना चाहते हैं? आप नहीं करते आप अपने उपयोगकर्ताओं को प्रदर्शित पाठ को स्थानीयकृत करना चाहते हैं। –

+0

क्योंकि मैं भाषा में कॉलम नाम लिखना चाहता हूं, जो उपयोगकर्ता समझ सकते हैं। –

+0

क्या आप मुझे बता सकते हैं कि डेटाबेस से तारों को कैसे स्थानांतरित किया जाए? –

उत्तर

3

एक बार जब आप अपनी प्रोजेक्ट में रेक्स फाइलें जोड़ लेते हैं, तो विजुअल स्टूडियो दृढ़ता से टाइप किए गए वर्ग उत्पन्न करता है जिससे आप उन्हें एक्सेस कर सकते हैं। उदाहरण के लिए आप अपने प्रोजेक्ट को Messages.resx जोड़ने अगर एक Messages स्थिर वर्ग बनाया जाएगा:

table.Columns.Add(Messages.UserId, typeof(int)); 

जहां UserId एक स्ट्रिंग संसाधन आपके द्वारा जोड़ी गई है।

एक बेहतर समाधान उपयोगकर्ता इंटरफ़ेस को स्थानांतरित करना होगा, न कि डेटाटेबल के कॉलम नाम। यहाँ एक उदाहरण है:

<%@ Page Language="C#" AutoEventWireup="true" %> 
<script type="text/C#" runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      var table = new System.Data.DataTable(); 
      table.Columns.Add("UserID", typeof(int)); 
      for (int i = 0; i < 10; i++) 
      { 
       table.Rows.Add(i); 
      } 
      grdTest.DataSource = table; 
      grdTest.DataBind(); 
     } 
    } 
</script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:GridView ID="grdTest" runat="server" AutoGenerateColumns="false"> 
      <Columns> 
       <asp:BoundField DataField="UserID" 
        HeaderText="default value" 
        meta:resourcekey="Grid" /> 
      </Columns> 
     </asp:GridView> 
    </div> 
    </form> 
</body> 
</html> 

पेज एकल स्तंभ के साथ एक DataTable करने के लिए बाध्य पर एक GridView नहीं है। बाउंडफ़िल्ल्ड पर meta:resourcekey="Grid" विशेषता पर ध्यान दें। अब अपने वेब एप्लिकेशन में विशेष App_LocalResources फ़ोल्डर जोड़ें और इसके अंदर Default.aspx.resx नामक संसाधन फ़ाइल को वेब पेज को Default.aspx कहा जाता है। आप निम्नलिखित स्ट्रिंग संसाधन जोड़ सकता है के अंदर:

Grid.HeaderText | Some value 

HeaderText मार्कअप में दिए गए का डिफ़ॉल्ट मान संसाधन फ़ाइल में एक से बदल दिया जाएगा बशर्ते वह मौजूद है।

+0

त्वरित उत्तर के लिए धन्यवाद। –

संबंधित मुद्दे