Solved

dataset.fieldbyname().asstring

Posted on 2004-10-13
6
2,683 Views
Last Modified: 2008-02-01
In Delphi, you use dataset to run a query, like select * from atable.
then you can use dataset.fieldbyname('AFieldName').asString (or as DateTime etc.) to get the field's value.

But I find in C#, you can only use fields' index to get the value rather than using field's name. So if you change your select fields order or insert a new field in the select, you have to chnage a lot of statements.

Is there a way use field's name like Delphi in C#?
0
Comment
Question by:petershaw8
  • 4
6 Comments
 
LVL 5

Expert Comment

by:tomasX2
ID: 12303776
dataSet.Tables[0].Rows[nRowNumber]["ColumnName"].ToString();

0
 
LVL 3

Expert Comment

by:Realmrat
ID: 12304313
              string connectionString = "my conn string";

               string commandString = "SELECT * FROM mytable";

               OdbcDataAdapter adapter = new OdbcDataAdapter(commandString,connectionString);

               DataSet data = new DataSet();
               adapter.Fill (data);

               // Loop for each record in the dataset
               foreach( DataRow row in data.Tables[0].Rows )
               {
                     mycombobox.Items.Add( row["myColumnName"] );
               }

Puts all the fields into a dropdown box.  Dunno if that helps any.  =]  Same thing as above almost.

 - Joe
0
 

Author Comment

by:petershaw8
ID: 12314246
For tomasX2  solution, I am not sure if it works for a little bit complicated sql statement, like
select a.aCol1,
         b.bCol1,
        (select cCol2 from cTablen where cCol1 = aCol1) as cCol2
from aTable a, bTable b

In this case, I guess dataSet.Tables[0] regers aTable, dataSet.Tables[1] refers bTable, but how about  cCol2?

For Joe's solution, Does the  row["myColumnName"]  always returns a string? and if the field is type of DateTime, then you need convert it fromstring to datetime?


Peter
0
Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

 
LVL 3

Expert Comment

by:Realmrat
ID: 12316260
The row[index] returns an object, so you can cast it to it's original value.

 - Joe
0
 
LVL 3

Expert Comment

by:Realmrat
ID: 12316521
Here's a little form in ASP.NET you can test with.  Shows how to interact with object values from the row[index] feature ... I was bored.  =]

 - Joe

                                                                  Page:
|-------------------------------------------------------------------------------------------------------------

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="EE.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="C#" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <table align="center">
                <tr>
                    <td><asp:datagrid id="DataGrid1" runat="server" Width="100%"></asp:datagrid></td>
                </tr>
                <tr>
                    <td align="center"><asp:button id="GetDateButton" runat="server" Text="Get Long Date"></asp:button><asp:button id="GetTimeButton" runat="server" Text="Get Short Time"></asp:button></td>
                </tr>
                <tr>
                    <td><br>
                        <br>
                        <asp:Label id="MessageLabel" runat="server" Font-Bold="True"></asp:Label>
                        <br>
                        <asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList></td>
                </tr>
            </table>
        </form>
    </body>
</HTML>


                                                                  Code:
|-------------------------------------------------------------------------------------------------------------

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlTypes;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace EE
{
      /// <summary>
      /// Summary description for WebForm1.
      /// </summary>
      public class WebForm1 : System.Web.UI.Page
      {
        protected DataTable data;
        protected System.Web.UI.WebControls.DataGrid DataGrid1;
        protected System.Web.UI.WebControls.Button GetDateButton;
        protected System.Web.UI.WebControls.Label MessageLabel;
        protected System.Web.UI.WebControls.DropDownList DropDownList1;
        protected System.Web.UI.WebControls.Button GetTimeButton;
        protected DataView  dataView;
            private void Page_Load(object sender, System.EventArgs e)
            {
            if (Session["TestData"] == null)
            {
                BuildTable();
            }
            else
                data = (DataTable)Session["TestData"];

            dataView = new DataView(data);
            dataView.Sort = "Item";
            if (!IsPostBack)
                BindList();
            }

        private void BindList()
        {
            DataGrid1.DataSource = dataView;
            DataGrid1.DataBind();
        }

        private void BuildTable()
        {
           
            data = new DataTable();
            data.Columns.Add(new DataColumn("Qty", typeof(string)));
            data.Columns.Add(new DataColumn("Item", typeof(string)));
            data.Columns.Add(new DataColumn("Price", typeof(string)));
            // Can also Use OdbcType.DateTime, SqlDateTime, etc
            data.Columns.Add(new DataColumn("Date", typeof(DateTime)));
            Session["DL3_ShoppingCart"] = data;

            // first load -- prepopulate with some data
            for (int i=1; i<5; i++)
            {
                DataRow dr = data.NewRow();
                dr[0] = ((int)((i%2)+1)).ToString();
                dr[1] = "Item " + i.ToString();
                dr[2] = ((double)(1.23 * (i+1))).ToString();
                dr[3] = DateTime.Now.AddDays((int)(2*(i+30)));
                data.Rows.Add(dr);
            }
        }

            #region Web Form Designer generated code
            override protected void OnInit(EventArgs e)
            {
                  //
                  // CODEGEN: This call is required by the ASP.NET Web Form Designer.
                  //
                  InitializeComponent();
                  base.OnInit(e);
            }
            
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {    
            this.GetDateButton.Click += new System.EventHandler(this.GetDateButton_Click);
            this.GetTimeButton.Click += new System.EventHandler(this.GetTimeButton_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
            #endregion

        private void GetDateButton_Click(object sender, System.EventArgs e)
        {
            try
            {
                foreach(DataRow row in data.Rows)
                {
                    DateTime myDate = (DateTime) row["date"];
                    DropDownList1.Items.Add(myDate.ToLongDateString());
                }
            }
            catch(Exception exc)
            {
                MessageLabel.Text = exc.Message;
            }
        }

        private void GetTimeButton_Click(object sender, System.EventArgs e)
        {
            try
            {
                foreach(DataRow row in data.Rows)
                {
                    DateTime myDate = (DateTime) row["date"];
                    DropDownList1.Items.Add(myDate.ToShortTimeString());
                }
            }
            catch(Exception exc)
            {
                MessageLabel.Text = exc.Message;
            }
        }
      }
}
0
 
LVL 3

Accepted Solution

by:
Realmrat earned 125 total points
ID: 12316534
As you can see, I stole some of the code from the ASP.NET quickstarts ... I missed an edit line!

            data.Columns.Add(new DataColumn("Date", typeof(DateTime)));
      ->  Session["DL3_ShoppingCart"] = data;

Hahaha  =]

 - Joe
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question