以下这段代码那里出错,为什么点ediBtn后,不能在文本框EditNewsKindName里显示ListBox(NewsKindList)里显示对应的electedIndex索引值?
private void Button1_Click(object sender, System.EventArgs e)
{
if(NewsKindName.Text.Trim()!="")
{
SqlConnection conn = new SqlConnection(DataBaseDB.ConnectionString);
String cmdText ="INSERT INTO NewsKinds(KindName,KindOrder)VALUES('"+NewsKindName.Text.Trim()+"','"+NewsKindList.Items.Count.ToString()+"')";
SqlCommand myCommand = new SqlCommand(cmdText,conn);
conn.Open();
myCommand.ExecuteNonQuery();
conn.Close();
NewsKindName.Text = "";
BindNewsKindData();
}
else{Response.Write("<script>alert(\"新闻种类名称不能为空\")</script>");}
}
private void BindNewsKindData()
{
NewsKindList.Items.Clear();
SqlConnection conn = new SqlConnection(DataBaseDB.ConnectionString);
String cmdText = "SELECT * FROM NewsKinds ORDER BY KindOrder";
SqlCommand myCommand = new SqlCommand(cmdText,conn);
conn.Open();
SqlDataReader recu = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
NewsKindList.DataSource = recu;
NewsKindList.DataTextField = "KindName";
NewsKindList.DataValueField = "NewsKindID";
NewsKindList.DataBind();
recu.Close();
} private void ediBtn_Click(object sender, System.EventArgs e)
{
if(NewsKindList.SelectedIndex>-1)
{
EditNewsKindName.Text = NewsKindList.SelectedItem.Text;


}
else{Response.Write("<script>alert(\"请选择你的数据项!\")</script>");}
}

解决方案 »

  1.   

    你在Page_Load事件中是否调用了BindNewsKindData事件呢?
    如果调用了,那么要放在
    if (!Page.IsPostBack)
    {
        ...    BindNewsKindData();    ...
    }
    中。
    以下这段代码那里出错,为什么点ediBtn后,不能在文本框EditNewsKindName里显示ListBox(NewsKindList)里显示对应的electedIndex索引值?
    ++++++++++++++++++++++++++++++++++++++++++
    点ediBtn后产生回调事件,是要刷新页面的,因为你的selectedIndex始终都是-1,所以不显示!!!
      

  2.   

    EditNewsKindName.Text = NewsKindList.SelectedItem.Text;
    这句有误。
    改成这样:
    EditNewsKindName.Text = NewsKindList.SelectedValue;
      

  3.   

    EditNewsKindName.Text = NewsKindList.SelectedItem.Text;
    这句有误。
    改成这样:
    EditNewsKindName.Text = NewsKindList.SelectedValue;我试了NewsKindList还是没有显示啊
      

  4.   

    不会吧?没错啊!
    ediBtn是不是改过名字?删了重建CLICK事件试试.
      

  5.   

    把你的Page_Load代码贴出来看看!是否添加了IsPostBack的判断???
      

  6.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    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 NewsKindManage
    {
    /// <summary>
    /// WebForm3 的摘要说明。
    /// </summary>
    public class WebForm3 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.Button ediBtn;
    protected System.Web.UI.WebControls.Button deleteBtn;
    protected System.Web.UI.WebControls.Button UpdateBtn;
    protected System.Web.UI.WebControls.TextBox EditNewsKindName;
    protected System.Web.UI.WebControls.Panel UpdatePanel;
    protected System.Web.UI.WebControls.ListBox NewsKindList;

    private void Page_Load(object sender, System.EventArgs e)
    { BindNewsKindData();

    }
    private void BindNewsKindData()
    {
    NewsKindList.Items.Clear();
    SqlConnection conn = new SqlConnection(DataBaseDB.ConnectionString);
    String cmdText = "SELECT * FROM NewsKinds ORDER BY KindOrder";
    SqlCommand myCommand = new SqlCommand(cmdText,conn);
    conn.Open();
    SqlDataReader recu = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
    NewsKindList.DataSource = recu;
    NewsKindList.DataTextField = "KindName";
    NewsKindList.DataValueField = "NewsKindID";
    NewsKindList.DataBind();
    recu.Close();
    }
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.ediBtn.Click += new System.EventHandler(this.ediBtn_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void ediBtn_Click(object sender, System.EventArgs e)
    { EditNewsKindName.Text = NewsKindList.SelectedValue.ToString();
    UpdatePanel.Visible = true;

    deleteBtn.Visible = false;



    }
    }
    }
    代码如上,那里出问题呢
      

  7.   

    一楼和
    ivee(ivee) 都说了.
    private void Page_Load(object sender, System.EventArgs e)
    {
                               if(!IsPostBack)
                               {
        BindNewsKindData();
                               }

    }
    另外建议对数据访问封装一下.
      

  8.   

    同意楼上他们所说的。你要在Page_Load事件中加上if (!Page.IsPostBack)
    {
          BindNewsKindData();
    }这样你再试试!
      

  9.   

    页面的回发问题,在page_Load中加上这句话,在页面第一次请求的时候执行里面的代码
    以后就不执行了
    if (!Page.IsPostBack)
    {
    BindNewsKindData();}
      

  10.   

    if (!Page.IsPostBack)
    {}
      

  11.   

    THANK YOU EVERYBODY!
    终于可以了,但是我不明白为什么
    if (!Page.IsPostBack)
    {}加了这个就可以??