Solved

dataset.fieldbyname().asstring

Posted on 2004-10-13
6
2,691 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
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
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…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

839 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