簡體   English   中英

數據列表選擇索引已更改未觸發

[英]datalist selectedindexchanged not firing

頁面加載:

 protected void Page_Load(object sender, EventArgs e)
  {

       tb.Columns.Add("Id", typeof(int));
        tb.Columns.Add("FileName", typeof(string));
        tb.Columns.Add("FilePath", typeof(string));
        tb.Columns.Add("Index", typeof(int));

        newtb.Columns.Add("Id", typeof(int));
        newtb.Columns.Add("FileName", typeof(string));
        newtb.Columns.Add("FilePath", typeof(string));
        newtb.Columns.Add("Index", typeof(int));

        path = objGetBaseCase.GetAllImagesfromGroup(CaseId);
        for (int i = 0; i < path.Count; i++)
        {
            ArrayList alst = path[i];
            tb.Rows.Add(Convert.ToInt32(alst[0]), alst[1].ToString(), alst[2].ToString(), i);

        }
        msgError.Text = "";

        dlstImage.DataSource = tb;
        DataBind();
        List<ArrayList> t = new List<ArrayList>();
        if (newpath.Count > 0)
        {
            t = newpath;
            newpath = t;
            for (int i = 0; i < newpath.Count; i++)
            {
                ArrayList alst = newpath[i];
                newtb.Rows.Add(Convert.ToInt32(alst[0]), alst[1].ToString(), alst[2].ToString(), i);

            }
            ViewState["tempimage"] = newpath;
            dlstSelectedImages.DataSource = newtb;
            DataBind();
        }

}

數據列表SelectedIndexChanged:

  protected void dlstSelectedImages_SelectedIndexChanged(object sender, EventArgs e)
  {
    indexId = Convert.ToInt32(dlstSelectedImages.DataKeys[dlstSelectedImages.SelectedIndex]);
  }

資料清單:

 <asp:DataList ID="dlstSelectedImages" runat="server" RepeatDirection="Horizontal"
                                RepeatColumns="5" CellSpacing="8" DataKeyField="Id"  OnSelectedIndexChanged="dlstSelectedImages_SelectedIndexChanged">
         <ItemTemplate>
               <asp:ImageButton ID="Image"  runat="server" ImageUrl='<%#"~/Controls/ShowImage.ashx?FileName=" +DataBinder.Eval(Container.DataItem, "FilePath") %>'
                                        CommandName="Select" OnCommand="ImageSelect_Command" CommandArgument='<%# Eval("Id").ToString() +";"+Eval("FilePath")+";"+Eval("Index")+";"+Eval("FileName") %>' /><br />
                   <asp:Label ID="nlbl" runat="server" Text="Figure"></asp:Label><%# dlstSelectedImages.Items.Count + 1%>
          </ItemTemplate>
  </asp:DataList>

迭代如下: View State="Enable"AutoEventWireup="true"

autopostback="true"

當我在!IsPostBack中綁定數據列表時,它工作得很好,但是現在我不想在!IsPostBack中綁定數據列表,並且我也不想使用ItemCommand

但是它不起作用,有人幫我...

每當SelectedIndex Change事件觸發時,就會在selectedIndex Change事件之前調用Page_Load事件。 在page_load事件中,您的DataList再次綁定,因此您的SelectedIndex事件丟失了。 您必須將您的DataList綁定代碼放在!IsPostBack例如

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
  {
   newtb.Columns.Add("Id", typeof(int));
   newtb.Columns.Add("FileName", typeof(string));
   newtb.Columns.Add("FilePath", typeof(string));
   newtb.Columns.Add("Index", typeof(int));

   List<ArrayList> t = new List<ArrayList>();
    if (newpath.Count > 0)
    {
        t = newpath;
        newpath = t;
        for (int i = 0; i < newpath.Count; i++)
        {
            ArrayList alst = newpath[i];
            newtb.Rows.Add(Convert.ToInt32(alst[0]), alst[1].ToString(), alst[2].ToString(), i);

        }
        ViewState["tempimage"] = newpath;
        dlstSelectedImages.DataSource = newtb;
        DataBind();
    }
  }
}

您必須在項目模板中放置一個按鈕或超鏈接。 看這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM