新闻发布系统中,修改新闻的页面,其中新闻大类和新闻小类都在数据库中,现在的问题是当我点一个新闻进行修改的时候,
比如,这个新闻是大类CC,小类cc,有时也有可能只有大类没有小类.现在我想在修改页面的列表框大类CC和小类cc处于选中状态.
后台代码如下.
OleDbConnection connstr = DBConnections.DBConnections.createConnection();
        connstr.Open();        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = connstr;
        cmd.CommandText = "Select * From Hover_News where ID=" + Request["ID"];
        //cmd.CommandText = "delete Hover_News.[ID] FROM Hover_News where id=" + Request["ID"];        //cmd.ExecuteNonQuery();
        DataSet dataset = new DataSet();
        OleDbDataAdapter dr = new OleDbDataAdapter();
        dr.SelectCommand = cmd;
        dr.Fill(dataset);        if (dataset.Tables.Count > 0)
        {
            if (dataset.Tables[0].Rows.Count > 0)
            {
               
                this.title.Text = dataset.Tables[0].Rows[0]["Title"].ToString();
                //this.ClassNews.SelectedValue = dataset.Tables[0].Rows[0]["BigClassName"].ToString();
                this.ClassNews.DataTextField = "BigClassName";
                if (dataset.Tables[0].Rows.Count< 0 )
                {
                    this.SmallClassNews.Enabled = false;
                }
                else
                {
                    //this.SmallClassNews.SelectedValue = dataset.Tables[0].Rows[0]["SmallClassName"].ToString();
                    this.SmallClassNews.DataTextField ="SmallClassName";
                }
                this.person.Text=dataset.Tables[0].Rows[0]["User"].ToString();
                this.zWeb.Text=dataset.Tables[0].Rows[0]["zWeb"].ToString();
                this.time.Text = System.DateTime.Now.AddDays(0).ToString() ;
            }
        }
        
        dataset.Dispose();
        dataset = null;
                connstr.Close();列表框ClassNews和SmallClassNews怎么获得数据

解决方案 »

  1.   

               if (dataset.Tables[0].Rows.Count > 0) 
                { 
                  
                    this.title.Text = dataset.Tables[0].Rows[0]["Title"].ToString(); 
                    //this.ClassNews.SelectedValue = dataset.Tables[0].Rows[0]["BigClassName"].ToString(); 
                    // 
                    this.ClassNews.DataTextField = "BigClassName"; 
                    this.ClassNews.DataValueField = "BigClassName"; 
                    this.ClassNews.DataSource = GetYourBigClassFromDataBase(); // eg.  maybe return DataTable
                    this.ClassNews.SelectedValue = dataset.Tables[0].Rows[0]["BigClassName"].ToString(); 
                    //
                    if (dataset.Tables[0].Rows.Count < 0 ) 
      

  2.   

     String strQuery = "SELECT * FROM JXNF_PBASE WHERE ISDEL <> 'Y' AND ID <> 0";
                    DataTable dt = PlatForm.NamedObjects.NonTransactionDatabaseAgent.ExecuteDataTable(strQuery);
                gvMain.DataSource = dt;
                gvMain.DataBind();
                ClassColor color = new ClassColor();
                color.GridViewColor(gvMain);
                ddlPbase.DataSource = dt;
                ddlPbase.DataValueField = "ID";
                ddlPbase.DataTextField = "PBASENAME";
                ddlPbase.DataBind();
      

  3.   

    列表框ClassNews和SmallClassNews怎么获得数据,数据在数据库里肯定有对应的ID吧。ClassNews.SelectedValue = dr["BigClassID"].ToString();SmallClassNews.SelectedValue = dr["SmallClassID"].ToString();这样就行了。
      

  4.   

    我用多表查询的方式可以解决这个问题,也会减少很多代码,现在又出现一些新问题..很是郁闷.代码如下.
     string sql;
            string SC=Request["SmallClassName"].ToString();
            if (SC == null)
            {
                sql = "SELECT Hover_BigClass_New.BigClassID, Hover_BigClass_New.BigClassName, Hover_SmallClass_New.SmallClassID, Hover_SmallClass_New.SmallClassName, Hover_SmallClass_New.BigClassName, Hover_News.ID, Hover_News.BigClassName, Hover_News.SmallClassName FROM (Hover_BigClass_New INNER JOIN Hover_News ON Hover_BigClass_New.BigClassName = Hover_News.BigClassName) INNER JOIN Hover_SmallClass_New ON Hover_News.BigClassName = Hover_SmallClass_New.BigClassName where Hover_News.ID=" + Request["ID"];
            }
            else
            {
                sql = "SELECT Hover_BigClass_New.BigClassID, Hover_BigClass_New.BigClassName, Hover_SmallClass_New.SmallClassID, Hover_SmallClass_New.SmallClassName, Hover_SmallClass_New.BigClassName, Hover_News.ID, Hover_News.BigClassName, Hover_News.SmallClassName FROM (Hover_BigClass_New INNER JOIN Hover_News ON Hover_BigClass_New.BigClassName = Hover_News.BigClassName) INNER JOIN Hover_SmallClass_New ON Hover_News.BigClassName = Hover_SmallClass_New.BigClassName where  Hover_SmallClass_New.SmallClassName='" + SC + "' and Hover_News.ID=" + Request["ID"];
            }        
            
            OleDbConnection connstr = DBConnections.DBConnections.createConnection();
            connstr.Open();        OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = connstr;
            cmd.CommandText = sql;        DataSet daset = new DataSet();
            OleDbDataAdapter ol = new OleDbDataAdapter();
            ol.SelectCommand = cmd;
            ol.Fill(daset);        if (daset.Tables[0].Rows.Count > 0)
            {
                ClassNews.AutoPostBack = true;
                ClassNews.DataSource = daset;
                ClassNews.DataTextField = "BigClassName";
                ClassNews.DataValueField = "BigClassID";
                ClassNews.DataBind();            SmallClassNews.Enabled = true;
                SmallClassNews.DataSource = daset;
                SmallClassNews.DataTextField = daset.Tables[0].Rows[0]["SmallClassName"].ToString();
                SmallClassNews.DataValueField = daset.Tables[0].Rows[0]["SmallClassID"].ToString();
                SmallClassNews.DataBind();        }
            else
            {
                ClassNews.AutoPostBack = false;
            }
            ol.Dispose();
            ol = null;
            connstr.Close();
    错误提示::
    DataBinding:“System.Data.DataRowView”不包含名为“BigClassName”的属性。
    我用的是多表查询应该不存在这个问题,也是我的方法是错的..
    高手们请指点一下.......
      

  5.   

    这两行代码
     SmallClassNews.DataTextField = daset.Tables[0].Rows[0]["SmallClassName"].ToString(); 
                SmallClassNews.DataValueField = daset.Tables[0].Rows[0]["SmallClassID"].ToString(); 同上边一样.也是会出现同样的问题,不明白,多表查询为什么还会出现不包含名为“BigClassName”的属性。,难道现在查找的表不是Hover_News吗,就算不是他们之间也关联着啊.请高手指点...
      

  6.   

    多个表中都有BigClassName,应该带上表名吧,yourtablename.BigClassName,在多表时两者有别。
      

  7.   

    你的DATATABLE里没有BigClassName列,也就是你查找的数据库里不包含此列,再详细核对一下
      

  8.   

    头晕了..还是搞不定,贴出全部代码和数据库字断..代码如下.
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {            this.bindtopDL();
               
            }        this.time.Text = System.DateTime.Now.AddDays(0).ToString();
        }
        private void bindtopDL()
        {
            string sql;
            string SC = Request["SmallClassName"].ToString();
            if (SC == null)
            {
                sql = "SELECT * FROM (Hover_BigClass_New INNER JOIN Hover_News ON Hover_BigClass_New.BigClassName = Hover_News.BigClassName) INNER JOIN Hover_SmallClass_New ON Hover_News.BigClassName = Hover_SmallClass_New.BigClassName where Hover_News.ID=" + Request["ID"];
            }
            else
            {
                sql = "SELECT * FROM (Hover_BigClass_New INNER JOIN Hover_News ON Hover_BigClass_New.BigClassName = Hover_News.BigClassName) INNER JOIN Hover_SmallClass_New ON Hover_News.BigClassName = Hover_SmallClass_New.BigClassName where  Hover_SmallClass_New.SmallClassName='" + SC + "' and Hover_News.ID=" + Request["ID"];
            }        //string sql = "SELECT Hover_News.ID, Hover_News.BigClassName, Hover_News.SmallClassName, Hover_BigClass_New.BigClassID, Hover_BigClass_New.BigClassName, Hover_SmallClass_New.SmallClassID, Hover_SmallClass_New.SmallClassName, Hover_SmallClass_New.BigClassName, Hover_News.Title FROM (Hover_BigClass_New INNER JOIN Hover_News ON Hover_BigClass_New.BigClassName = Hover_News.BigClassName) INNER JOIN Hover_SmallClass_New ON Hover_News.BigClassName = Hover_SmallClass_New.BigClassName where ID=143 and Hover_SmallClass_New.SmallClassName='时尚资讯'";
            
            OleDbConnection connstr = DBConnections.DBConnections.createConnection();
            connstr.Open();        OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = connstr;
            cmd.CommandText = sql;        DataSet daset = new DataSet();
            OleDbDataAdapter ol = new OleDbDataAdapter();
            ol.SelectCommand = cmd;
            ol.Fill(daset);        if (daset.Tables[0].Rows.Count > 0)
            {
                ClassNews.AutoPostBack = true;
                ClassNews.DataSource = daset;
                ClassNews.DataTextField = "BigClassName";
                ClassNews.DataValueField = "BigClassID";
                ClassNews.DataBind();            //SmallClassNews.Enabled = true;
                SmallClassNews.DataSource = daset;
                SmallClassNews.DataTextField = "SmallClassName";
                SmallClassNews.DataValueField = "SmallClassID";
                SmallClassNews.DataBind();        }
            else
            {
                ClassNews.AutoPostBack = false;
            }
            ol.Dispose();
            ol = null;
            daset.Dispose();
            daset = null;
            connstr.Close();
        }
    Hover_News表字段如下ID,Title,Content,BigClassName,SmallClassName,User,zWeb,Time
    Hover_BigClass_New字段如下:BigClassID,BigID,BigClassName
    Hover_SmallClass_New字段如下:SmallClassID,SmallClassName,BigClassName
    查询的就是这三个表..高手们帮我看看,到底是哪里不对,谢谢
      

  9.   

    感觉思路好像不对,这是一个新闻发布系统的修改新闻页面,大部分数据在Hover_New表里,大类下拉框ClassNews数据在Hover_BigClass_New表里,小类下拉框SmallClassNews数据在Hover_SmallClass_New,小类根据大类改变而改变,有时可能
    没有小类.现在修改新闻,大类和小类显示相应的数据.也可以改变大类和小类.现在问题就出在点一条新闻进行修改小类和大类的显示上相应的数据上.,后台代码如10楼,不过好像思路有点不对.这样出来的数据只是一条大类和小类.前台代码贴出...
    <form id="form1" runat="server">
        <div>
        
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
                
             新闻标题<asp:TextBox ID="title" runat="server"></asp:TextBox>
            <br />
            <br />
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
              <Triggers>
            <asp:AsyncPostBackTrigger ControlID="ClassNews" EventName="SelectedIndexChanged" />
            </Triggers>
            <ContentTemplate>
                       <fieldset>
                         <legend></legend>
          
            新闻类别  
            
           
            <asp:DropDownList ID="ClassNews" runat="server" Height="23px" Width="86px" 
                AutoPostBack="True" OnSelectedIndexChanged="ClassNews_SelectedIndexChanged">
            </asp:DropDownList>
     
             <asp:DropDownList ID="SmallClassNews" runat="server" Height="23px" Width="86px">
            </asp:DropDownList>
            &nbsp;&nbsp; 
            <br />        <br />
            
            <br />
            
                 </fieldset>
                </ContentTemplate>
            </asp:UpdatePanel>
             新闻内容
             <cc1:HtmlEditor ID="HtmlEditor1" runat="server"  TF_EditHtml="1" TF_UpTu="1" ResourcesPath="HtmlEditor"  />        <br />
            <br />
           
            <br />
            <br />
            发布人<asp:TextBox ID="person" runat="server"></asp:TextBox>
            <br />
            <br />
            摘录网址<asp:TextBox ID="zWeb" runat="server"></asp:TextBox>        <br />
            <br />
            录入时间<asp:TextBox ID="time" runat="server" ReadOnly="True"></asp:TextBox>
            <br />
            <br />
            <br />
            <asp:Button ID="Button1" runat="server" Text="提交" onclick="Button1_Click" />
        
            <br />
            
            <br />
            
            
            
        
            
        
        </div>
        </form>
    后台代码如10楼...
      

  10.   

    问题解决,贴出全部代码:
    public partial class admins_editnews : System.Web.UI.Page
    {    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {            //this.bindtopDL();
                show();
                bindsubDL();
               
            }        this.time.Text = System.DateTime.Now.AddDays(0).ToString();
        }
        //private void bindtopDL()
        //{
        //    OleDbConnection connstr = DBConnections.DBConnections.createConnection();
        //    connstr.Open();    //    OleDbCommand cmd = new OleDbCommand();
        //    cmd.Connection = connstr;
        //    cmd.CommandText = "SELECT * FROM [Hover_BigClass_New]";
        //    DataSet daset = new DataSet();
        //    OleDbDataAdapter ol = new OleDbDataAdapter();
        //    ol.SelectCommand = cmd;
        //    ol.Fill(daset);    //    if (daset.Tables[0].Rows.Count > 0)
        //    {
        //        ClassNews.AutoPostBack = true;
        //        ClassNews.DataSource = daset;
        //        ClassNews.DataTextField = "BigClassName";
        //        ClassNews.DataValueField = "BigClassID";
        //        ClassNews.DataBind();    //    }
        //    else
        //    {
        //        ClassNews.AutoPostBack = false;
        //    }
        //    ol.Dispose();
        //    ol = null;
        //    connstr.Close();
        //}    private void bindsubDL()
        {
            if (this.ClassNews.SelectedItem.ToString() != "")
            {
                OleDbConnection connstr = DBConnections.DBConnections.createConnection();
                connstr.Open();            OleDbCommand cmd1 = new OleDbCommand();
                cmd1.Connection = connstr;
                cmd1.CommandText = "Select * From Hover_SmallClass_New where BigClassName='" + ClassNews.SelectedItem.ToString() + "'";            DataSet ds1 = new DataSet();
                OleDbDataAdapter dsda = new OleDbDataAdapter();
                dsda.SelectCommand = cmd1;
                dsda.Fill(ds1);            if (ds1.Tables[0].Rows.Count > 0)
                {                SmallClassNews.Enabled = true;
                    SmallClassNews.DataSource = ds1;
                    SmallClassNews.DataTextField = "SmallClassName";
                    SmallClassNews.DataValueField = "SmallClassID";
                    SmallClassNews.DataBind();            }
                else
                {
                    SmallClassNews.Enabled = false;            }
                ds1.Dispose();
                ds1 = null;
                connstr.Close();
            }
            else
            {            SmallClassNews.Enabled = false;
            }
        }    protected void ClassNews_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            //this.bindtopDL();
            this.bindsubDL();
        }
        //protected void ClassNews_OnClick(object sender, System.EventArgs e)
        //{
        //    this.bindtopDL();
        //}
        //protected void ClassNews_OnFoucsMouseOver(object sender, System.EventArgs e)
        //{
        //    this.bindtopDL();
        //}    protected void Button1_Click(object sender, EventArgs e)
        {
        //    string SmallClassName;
        //    if (this.SmallClassNews.Enabled == true)
        //    {
        //        SmallClassName = this.SmallClassNews.SelectedItem.ToString();
        //    }
        //    else
        //    {
        //        SmallClassName = "";
        //    }
        //    string title = this.title.Text;
        //    string BigClassName = this.ClassNews.SelectedItem.ToString();    //    string content = this.HtmlEditor1.Text;
           
        //    string person = this.person.Text;
        //    string zWeb = this.zWeb.Text;
        //    string time = this.time.Text;    //    OleDbConnection connstr = DBConnections.DBConnections.createConnection();
        //    connstr.Open();    //    OleDbCommand cmd = new OleDbCommand();
        //    cmd.Connection = connstr;
        //    cmd.CommandText = "INSERT INTO Hover_News ([Title], [Content], [BigClassName], [SmallClassName], [User], [zWeb],[Time]) VALUES ('" + title + "','" + content + "','" + BigClassName + "','" + SmallClassName + "','" + person + "','" + zWeb + "','" + time + "')";    //    cmd.ExecuteNonQuery();
        //    Response.Write("<script language='javascript'>alert('新闻添加成功!');window.location.href='NewManage.aspx';</script>");    //    connstr.Close();
        }    protected void show()
        {
            
            OleDbConnection connstr = DBConnections.DBConnections.createConnection();
            connstr.Open();        OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = connstr;
            cmd.CommandText = "Select * From Hover_News where ID=" + Request["ID"];        DataSet dataset = new DataSet();
            OleDbDataAdapter dr = new OleDbDataAdapter();
            dr.SelectCommand = cmd;
            dr.Fill(dataset);        if (dataset.Tables.Count > 0)
            {
                if (dataset.Tables[0].Rows.Count > 0)
                {
                   
                    this.title.Text = dataset.Tables[0].Rows[0]["Title"].ToString();
                    string classname=dataset.Tables[0].Rows[0]["BigClassName"].ToString();
                    string smallname = dataset.Tables[0].Rows[0]["SmallClassName"].ToString();
                    //////////////////////////////////////////////////////////////////////////
                    string sql;
                    sql = "SELECT * FROM Hover_BigClass_New";                OleDbCommand cmd1 = new OleDbCommand();
                    cmd1.Connection = connstr;
                    cmd1.CommandText = sql;                DataSet daset = new DataSet();
                    OleDbDataAdapter ol = new OleDbDataAdapter();
                    ol.SelectCommand = cmd1;
                    ol.Fill(daset);                if (daset.Tables.Count > 0)
                    {
                        if (daset.Tables[0].Rows.Count > 0)
                        {                        ClassNews.AutoPostBack = true;
                            ClassNews.DataSource = daset;
                            ClassNews.DataTextField = "BigClassName";
                            ClassNews.DataValueField = "BigClassID";
                            ClassNews.DataBind();                        if (daset.Tables[0].Rows[0]["BigClassName"].ToString() == classname.Trim());
                            {                            //ClassNews.selectvalue.Selected = true;
                                ClassNews.SelectedItem.Text = classname.Trim();
                                //Response.Write("<script language='javascript'>alert('"+classname+"');</script>");                        }                    }                }
                    ol.Dispose();
                    ol = null;
                    daset.Dispose();
                    daset = null;
                    /////////////////////////////////////////////////////////////////////////////                this.HtmlEditor1.Text = dataset.Tables[0].Rows[0]["Content"].ToString();                this.person.Text=dataset.Tables[0].Rows[0]["User"].ToString();
                    this.zWeb.Text=dataset.Tables[0].Rows[0]["zWeb"].ToString();
                    this.time.Text = System.DateTime.Now.AddDays(0).ToString() ;
                }
            }
            
            dataset.Dispose();
            dataset = null;
                    connstr.Close();
        }
    }