以下这段代码那里出错,为什么点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>");}
}
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>");}
}
如果调用了,那么要放在
if (!Page.IsPostBack)
{
... BindNewsKindData(); ...
}
中。
以下这段代码那里出错,为什么点ediBtn后,不能在文本框EditNewsKindName里显示ListBox(NewsKindList)里显示对应的electedIndex索引值?
++++++++++++++++++++++++++++++++++++++++++
点ediBtn后产生回调事件,是要刷新页面的,因为你的selectedIndex始终都是-1,所以不显示!!!
这句有误。
改成这样:
EditNewsKindName.Text = NewsKindList.SelectedValue;
这句有误。
改成这样:
EditNewsKindName.Text = NewsKindList.SelectedValue;我试了NewsKindList还是没有显示啊
ediBtn是不是改过名字?删了重建CLICK事件试试.
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;
}
}
}
代码如上,那里出问题呢
ivee(ivee) 都说了.
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
BindNewsKindData();
}
}
另外建议对数据访问封装一下.
{
BindNewsKindData();
}这样你再试试!
以后就不执行了
if (!Page.IsPostBack)
{
BindNewsKindData();}
{}
终于可以了,但是我不明白为什么
if (!Page.IsPostBack)
{}加了这个就可以??