我用WebGrid显示DataSet的内容,因为有婚姻这一个字段,在表中是用0表示未婚、1表示已婚。在显示的时候我想根据表中字段的内容直接显示中文,我看帮助中Column中有ValueList属性,我设置了其中的值,但发现只有编辑的时候显示下拉框,选择后才显示汉字,而在刚DataBind时就显示0或1。该怎样设置才能实现我这样的要求,希望能给出详细一点的解答,谢谢!!!

解决方案 »

  1.   

    如果字段是字符型的
    data.Columns.FromKey("Receiver").ValueList.ValueListItems.Add("0","未婚");
    data.Columns.FromKey("Receiver").ValueList.ValueListItems.Add("1","已婚");如果是数值型的data.Columns.FromKey("Receiver").ValueList.ValueListItems.Add(0,"未婚");
    data.Columns.FromKey("Receiver").ValueList.ValueListItems.Add(1,"已婚");
      

  2.   

    你也可以在SQL中生成
    比如说: select case 婚姻 when 0 then 未婚 when 1 then 已婚 end case
      

  3.   

    for  goodbegin(清水) 这个在程序中加与在设计器中设置有区别吗?
    在设计器中应该都是字符型的
      

  4.   

    for jywwm(Wind),你实现过这个吗?我测试在程序中加还是同样的问题,你是否有这样的示例可以分享一下,谢谢!!!
      

  5.   

    不行的话 
    Page_Load()里加这个
    data.Columns.FromKey("Receiver").ValueList.ValueListItems.Add(0,"未婚");
    data.Columns.FromKey("Receiver").ValueList.ValueListItems.Add(1,"已婚");private void dataMedia_InitializeRow(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e)
    {
    e.Row.Cells.FromKey("Receiver").Value=Convert.ToInt32(e.Row.Cells.FromKey("Receiver").Value);}
      

  6.   

    这个是dataMedia的InitializeRow事件
    private void dataMedia_InitializeRow(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e)
    {
    e.Row.Cells.FromKey("Receiver").Value=Convert.ToInt32(e.Row.Cells.FromKey("Receiver").Value);}
      

  7.   

    为什么不考虑一下fly_miss(新年新气象)的做法,你在数据库中就处理:select case [婚姻] when 0 then '未婚' when 1 then '已婚' end as [婚姻]
      

  8.   

    还是不行,提示未引用对象实例,发生错误。
    是因为你的那一列的Key值不是"Receiver"
    e.Row.Cells.FromKey("Receiver").Value
    中的"Receiver"是那一列的Key值
      

  9.   

    fly_miss(新年新气象)的方法是可以实现,而且也很简单,不过,我现在想了解WebGrid的功能,因为帮定的时候不是每个记录集都从SQL中获得。
    jywwm(Wind),我的程序自认为没什么问题,我把我的测试程序贴出来,你帮我看看问题的所在:
    1)在WebForm1.aspx中定义了控件,并定义一列[编号],KEY为ID,绑定ID字段 <igtbl:UltraWebGrid id="UltraWebGrid1" style="Z-INDEX: 102; LEFT: 40px; POSITION: absolute; TOP: 14px"
    runat="server" Height="200px" Width="325px">
    <DisplayLayout RowHeightDefault="20px" Version="3.00" BorderCollapseDefault="Separate" Name="UltraWebGrid1">
    <AddNewBox>
    <Style BorderWidth="1px" BorderStyle="Solid" BackColor="LightGray"><BorderDetails ColorTop="White" WidthLeft="1px" WidthTop="1px" ColorLeft="White">
    </BorderDetails> </Style>
    </AddNewBox>
    <Pager>
    <Style BorderWidth="1px" BorderStyle="Solid" BackColor="LightGray"><BorderDetails ColorTop="White" WidthLeft="1px" WidthTop="1px" ColorLeft="White">
    </BorderDetails> </Style>
    </Pager>
    <HeaderStyleDefault BorderStyle="Solid" BackColor="LightGray">
    <BorderDetails ColorTop="White" WidthLeft="1px" WidthTop="1px" ColorLeft="White"></BorderDetails>
    </HeaderStyleDefault>
    <FrameStyle Width="325px" BorderWidth="1px" Font-Size="8pt" Font-Names="Verdana" BorderStyle="Solid"
    Height="200px"></FrameStyle>
    <FooterStyleDefault BorderWidth="1px" BorderStyle="Solid" BackColor="LightGray">
    <BorderDetails ColorTop="White" WidthLeft="1px" WidthTop="1px" ColorLeft="White"></BorderDetails>
    </FooterStyleDefault>
    <EditCellStyleDefault BorderWidth="0px" BorderStyle="None"></EditCellStyleDefault>
    <RowStyleDefault BorderWidth="1px" BorderColor="Gray" BorderStyle="Solid">
    <Padding Left="3px"></Padding>
    <BorderDetails WidthLeft="0px" WidthTop="0px"></BorderDetails>
    </RowStyleDefault>
    </DisplayLayout>
    <Bands>
    <igtbl:UltraGridBand>
    <Columns>
    <igtbl:UltraGridColumn HeaderText="编号" Key="ID" BaseColumnName="ID"></igtbl:UltraGridColumn>
    </Columns>
    </igtbl:UltraGridBand>
    </Bands>
    </igtbl:UltraWebGrid>2)在WebForm1.aspx.cx中
    在Page_Load中
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    UltraWebGrid1.Columns.FromKey("ID").ValueList.ValueListItems.Add(0,"已婚");
    UltraWebGrid1.Columns.FromKey("ID").ValueList.ValueListItems.Add(1,"未婚");
    System.Data.DataTable dt=new DataTable();
    System.Data.DataColumn dc=dt.Columns.Add();
    dc.ColumnName="ID";
    dc.DataType=typeof(short);
    System.Data.DataRow dr=dt.NewRow();
    dr["ID"]=1;
    dt.Rows.Add(dr);
    UltraWebGrid1.DataSource=dt;
    UltraWebGrid1.DataBind();
    }在InitializeRow中
    private void UltraWebGrid1_InitializeRow(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e)
    {
    e.Row.Cells.FromKey(ID).Value=Convert.ToInt32(e.Row.Cells.FromKey(ID).Value);
    }
    谢谢
      

  10.   


    <igtbl:UltraGridColumn HeaderText="编号" Key="ID" Type="DropDownList" BaseColumnName="ID" ></igtbl:UltraGridColumn>
    改成这样
      

  11.   

    这些方法都太麻烦了,最简单的办法:
    select case 婚姻 when 0 then '未婚' when 1 then '已婚' end from table
      

  12.   

    谢谢jywwm(Wind)的指教,方法可以!