2011-10-10 51 views
0

我有一個DataList如何將項目從一個數據列表轉移到其他數據列表?

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

在其本人圖像通過uplodify上傳上傳後綁定,現在我又多了一個數據列表 和兩個BTN上下,

<asp:ImageButton ID="ibtnMoveUp" runat="server" ImageUrl="~/App_Themes/Default/Images/moveup.bmp" 
         Style="height: 16px" ToolTip="MoveUp The Item" /> 
<asp:ImageButton ID="ibtnMoveDown" runat="server" ImageUrl="~/App_Themes/Default/Images/movedown.bmp" 
         ToolTip="MoveDown The Item" /> 

<asp:DataList ID="dlstSelectedImages" runat="server" RepeatDirection="Horizontal" 
           RepeatColumns="5" CellSpacing="8"> 
    <ItemTemplate> 
     <asp:ImageButton ID="Image" runat="server" /><br /> 
     <asp:Label ID="lbl" runat="server" Text="Figure"></asp:Label><%# dlstImage.Items.Count + 1%> 
    </ItemTemplate> 
</asp:DataList> 

我的兩個數據列表是在同一個web用戶控件中,datalist1和datalist2和我有2個BTN上下,當我從datalist1中選擇一個圖像,然後點擊下btn,然後選定的圖像應該移動到datalist2。怎麼做?有人請幫助我,

回答

0

我使用這個代碼和它的工作對我來說很好。

ArrayList ImgArry = new ArrayList(); 
    path = objGetBaseCase.GetImages(TotImgIds); 
    ImgArry.Add(SelImgId); 
    ImgArry.Add(SelImgpath);//image name 
    ImgArry.Add(SelImgName);//image path 
    //path.Remove(ImgArry); 
    List<ArrayList> t = new List<ArrayList>(); 
    if (newpath.Count > 0) 
     t = newpath; 
    t.Add(ImgArry); 
    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); 

    } 
    dlstSelectedImages.DataSource = newtb; 
    DataBind(); 

    path = objGetBaseCase.GetImages(TotImgIds); 
    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); 

    } 
    dlstImage.DataSource = tb; 
    DataBind(); 
1

您需要處理一個 DataList控件的ItemCommand事件中,你必須到所選擇的數據(圖像)複製到的 DataList另一個數據源,並從數據源中刪除該項目一個DataList

標記:

<asp:DataList 
      ID="DataList1" 
      runat="server" 
      OnItemCommand="PerformMove" 
      > 
     <ItemTemplate> 
     <br /><%#Eval("Text") %> 
     <asp:Button ID="btn1" 
       runat="server" 
       Text="Move" 
       CommandName="cmd" 
       CommandArgument='<%#Eval("Text") %>' 
       /> 

     </ItemTemplate> 
</asp:DataList> 
<asp:DataList ID="DataList2" runat="server"> 
      <ItemTemplate> 
      <br /><%#Eval("Text") %> 
      </ItemTemplate> 
</asp:DataList> 

代碼隱藏(的.cs)

public class Data 
    { 
     public string Text { get; set; } 
     public override int GetHashCode() 
     { 
      return Text.GetHashCode(); 
     } 
     public override bool Equals(object obj) 
     { 
      return GetHashCode() == obj.GetHashCode(); 
     } 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      List<Data> list1 = new List<Data >() 
      { 
       new Data() { Text="One"}, 
       new Data() { Text="Two"}, 
       new Data() { Text="Three"}, 
      }; 
      List<Data> list2 = new List<Data>(); 
      Session["list1"] = list1; 
      Session["list2"] = list2; 

      DataList1.DataSource = Session["list1"]; 
      DataList1.DataBind(); 

      DataList2.DataSource = Session["list2"]; 
      DataList2.DataBind(); 
     } 
    } 
    protected void PerformMove(object source, DataListCommandEventArgs e) 
    { 
     if (e.CommandName == "cmd") 
     { 
      List<Data> list1 = Session["list1"] as List<Data>; 
      List<Data> list2 = Session["list2"] as List<Data>; 

      list1.Remove(new Data() { Text=e.CommandArgument.ToString() }); 
      list2.Add(new Data() { Text = e.CommandArgument.ToString() }); 
      DataList1.DataSource = Session["list1"]; 
      DataList1.DataBind(); 

      DataList2.DataSource = Session["list2"]; 
      DataList2.DataBind(); 
     } 
    } 
+0

請你給一些示例代碼爲.. – Rocky

+0

誰能給一些其他的與圖像按鈕,我的上移和下移BTN超出DataList控件的側面不是邊DataList控件。 – Rocky

+0

我的兩個datalist都在同一個web用戶控件中,datalist1和datalist2,我有2個btn上下,當我從datalist1中選擇一個圖像並單擊向下btn時,所選圖像應移至datalist2。請有人幫我 – Rocky

相關問題