当我选择“kategorije”中的项目时,新项目会被加载到“SUB_kategorije”中,但是当我从SUB_kategorije中选择项目时,当我点击按钮时它会显示此错误:
对象引用未设置为对象的实例。
Line 101: kom.Parameters.Add("@podkategorija", SqlDbType.Text).Value =
SUB_kategorije.SelectedItem.ToString();
这是我的来源......
答案 0 :(得分:0)
问题在于你Page_Load
。将其更改为:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlDataSource df = new SqlDataSource();
df.ConnectionString = conn;
df.SelectCommand = "SELECT [ID], [Kategorije] FROM [kategorije] ";
kategorije.DataSource = df;
kategorije.DataTextField = "Kategorije";
kategorije.DataValueField = "ID";
kategorije.DataBind();
}
}
每次代码执行回发时,问题都在于重新绑定kategorije
,所以在Button1_Click
运行时,kategorije
已重新绑定并重置,因此SelectedValue
为空
如果发生回发,您的Page_Load
代码会先运行,那么Button1_Click
会立即运行。将该代码移到!IsPostBack
检查中会导致它仅在您第一次加载页面时运行,而不会在SelectedValue
可用之后再次运行。
答案 1 :(得分:0)
当我从“kategorije”中选择项目时,新项目未加载到“SUB_kategorije”,为什么?
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlDataSource ds = new SqlDataSource();
ds.ConnectionString = conn;
ds.SelectCommand = "SELECT [ID], [Kategorije] FROM [kategorije] ";
kategorije.DataSource = ds;
kategorije.DataTextField = "Kategorije";
kategorije.DataValueField = "ID";
kategorije.DataBind();
kategorije.SelectedIndex = 1;
SqlDataSource dk = new SqlDataSource();
dk.ConnectionString = conn;
dk.SelectCommand = "SELECT * from pod_kategorije WHERE kat_id = " + kategorije.SelectedItem.Value;
SUB_kategorije.DataSource = dk;
SUB_kategorije.DataTextField = "pkategorija";
SUB_kategorije.DataValueField = "ID";
SUB_kategorije.DataBind();
}
}
protected void kategorije_SelectedIndexChanged(object sender, EventArgs e)
{
SqlDataSource dk = new SqlDataSource();
dk.ConnectionString = conn;
dk.SelectCommand = "SELECT * from pod_kategorije WHERE kat_id = " + kategorije.SelectedItem.Value;
SUB_kategorije.DataSource = dk;
SUB_kategorije.DataTextField = "pkategorija";
SUB_kategorije.DataValueField = "ID";
SUB_kategorije.DataBind();
}