自定义DataSet,想用属性访问的方法访问内部表内指定行列的值。如下写法编译时没问题,但运行时报错,请高手指点。感谢
public class UserDataSet : DataSet
{
 private DataTable tbError;
 public UserDataSet()
{
            tbError = new DataTable("Error");
            DataColumn colFlg = new DataColumn("ErrorFlg", Type.GetType("System.Int32"));
            tbError.Columns.Add(colFlg);
            DataColumn colID = new DataColumn("ErrorID", Type.GetType("System.String"));
            tbError.Columns.Add(colID);           
            
            tbError.Rows[0]["ErrorFlg"] = -1;
            tbError.Rows[0]["ErrorID"] = "";
            
}  
        public int ErrorFLG
        {
            set
            {
                tbError.Rows[0]["ErrorFlg"] = value;
            }
            get
            {
                return Convert.ToInt32(tbError.Rows[0]["ErrorFlg"]);
            }
        }        
        public string ErrorID
        {
            set
            {
                tbError.Rows[0]["ErrorID"] = value;
            }
            get
            {
                return tbError.Rows[0]["ErrorID"].ToString();
            }
        }
}

解决方案 »

  1.   

    构造方法这样写
    public UserDataSet()
            {            
                tbError = new DataTable("Error");
                DataColumn colFlg = new DataColumn("ErrorFlg", Type.GetType("System.Int32"));
                tbError.Columns.Add(colFlg);
                DataColumn colID = new DataColumn("ErrorID", Type.GetType("System.String"));
                tbError.Columns.Add(colID);
                DataRow dr;
                dr = tbError.NewRow();
                dr["ErrorFlg"] = -1;
                dr["ErrorID"] = "";
                tbError.Rows.Add(dr);
    }
      

  2.   

    构造函数中有错吧。
    构建了一个表,连行都没有,你就直接往index为0的行里写东西。
      

  3.   

    wg115039554(小钢)的可以了,但是我把这个自定义的DATASET放到WEBSERVICES上返回的时候结构和SYSTEM.DATASET完全不一样了。在客户端调用时自定义的DATASET的属性都不见了。怀疑在自己定DATASET时,结构还是有问题。
      

  4.   

    No DataRow Initialization !
      

  5.   

    没法了,最后定义了一个DATATABLE类型的属性,
        public class UserData
        {
            private DataTable _tableuser;
                
            public UserData()
            {
                _tableuser = null;
            }
            public DataTable TableUser
            {
                set
                {
                    _tableuser = value;
                }
                get
                {
                    return _tableuser;
                }
            }
        }
    在WEB SERVICES端赋值userData.TableUser=myDataTabel(一个查询结果);最后把userData传到客户端怎么取出userData.TableUser的数据呢?
    其中的XML数据如下:
      <?xml version="1.0" encoding="utf-8" ?> 
    - <UserData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.bbinc.co.jp">
      <ErrorFLG>0</ErrorFLG> 
      <ErrorID /> 
      <ParameterName /> 
      <ParameterValue /> 
      <RecordCount>2</RecordCount> 
      <RecordBegin>0</RecordBegin> 
      <RecordEnd>0</RecordEnd> 
    - <TableUser>
    - <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    - <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="ds" msdata:UseCurrentLocale="true">
    - <xs:complexType>
    - <xs:choice minOccurs="0" maxOccurs="unbounded">
    - <xs:element name="ds">
    - <xs:complexType>
    - <xs:sequence>
      <xs:element name="USER_ID" type="xs:string" minOccurs="0" /> 
      <xs:element name="PASSWD" type="xs:string" minOccurs="0" /> 
      <xs:element name="USER_NAME" type="xs:string" minOccurs="0" /> 
      <xs:element name="ENTRY_DATE" type="xs:dateTime" minOccurs="0" /> 
      <xs:element name="MAIL_ADDR" type="xs:string" minOccurs="0" /> 
      <xs:element name="SECTION_CD" type="xs:string" minOccurs="0" /> 
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      </xs:choice>
      </xs:complexType>
      </xs:element>
      </xs:schema>
    - <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    - <NewDataSet xmlns="">
    - <ds diffgr:id="ds1" msdata:rowOrder="0">
      <USER_ID>WWWWW</USER_ID> 
      <PASSWD>QQQQQQ</PASSWD> 
      <USER_NAME>EEEEE</USER_NAME> 
      <MAIL_ADDR>[email protected]</MAIL_ADDR> 
      <SECTION_CD>12343567</SECTION_CD> 
      </ds>
    - <ds diffgr:id="ds2" msdata:rowOrder="1">
      <USER_ID>DDDDDD</USER_ID> 
      <PASSWD>GGGGGG</PASSWD> 
      <USER_NAME>RRRR</USER_NAME> 
      <MAIL_ADDR>[email protected]</MAIL_ADDR> 
      <SECTION_CD>0123456</SECTION_CD> 
      </ds>
      </NewDataSet>
      </diffgr:diffgram>
      </TableUser>
      </UserData>