2009-04-15 [.NET C#] 多重選擇彈跳式表單 7112 0 .Net C# 2009-04-16 摘要:[.NET C#] 多重選擇彈跳式表單 前言:搬搬搬...把之前blog的文章搬過來,順便記錄一下自己之前寫過的東西。功能圖片如下:下面是GridView該欄位的內容(在aspx檔案裡)<asp:TemplateField meta:resourcekey="TemplateFieldResource4"> <ItemTemplate> <asp:Label ID="LabelLimit" runat="server" Text='<%# Eval("limit") %>' meta:resourcekey="LabelLimitResource1" /> </ItemTemplate> <EditItemTemplate> <asp:TextBox ID="TextBoxLimit" runat="server" Width="300px" MaxLength="100" meta:resourcekey="TextBoxLimitResource1" /> <asp:LinkButton ID="LinkButtonLimit" runat="server" meta:resourcekey="LinkButtonLimitResource1" /> <asp:LinkButton ID="LinkButtonClear" runat="server" meta:resourcekey="LinkButtonClearResource1" /> </EditItemTemplate> <ItemStyle CssClass="ItemStyleWordBreakCss" /> <HeaderStyle CssClass="HeaderStyleCss" /> </asp:TemplateField> 然後是在GridView_RowDataBound裡Attribute Add Javascipt 到LinkButton裡protected void GridViewDocumentSetup_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex > -1) { if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit)) { TextBox TextBoxLimit = (TextBox)e.Row.Cells[3].FindControl("TextBoxLimit"); TextBoxLimit.Text = DataBinder.Eval(e.Row.DataItem, "limit").ToString(); LinkButton LinkButtonLimit = (LinkButton)e.Row.Cells[3].FindControl("LinkButtonLimit"); //新開彈跳視窗 LinkButtonLimit.Attributes.Add("onclick", "event.returnValue=false;window.open('SystemLimitStatusPopUp.aspx?action=" + TextBoxLimit.ClientID + "','1','scrollbars=1,status=yes,width=420,height=200','')"); LinkButton LinkButtonClear = (LinkButton)e.Row.Cells[3].FindControl("LinkButtonClear"); //清空欄位 LinkButtonClear.Attributes.Add("onclick", "event.returnValue=false;document.all." + TextBoxLimit.ClientID + ".value='';"); } } } 接下來是彈跳視窗的aspx<table width="100%"> <tr> <td> <asp:Label ID="Label1" runat="server" /> </td> <td> </td> <td> <asp:Label ID="Label2" runat="server" /> </td> </tr> <tr> <td style="width:45%"> <asp:ListBox ID="ListBoxAllowStatus" runat="server" SelectionMode="Multiple" Width="100%" Height="120px"></asp:ListBox> </td> <td style="width:10%; height:120; text-align:center "> <asp:Button ID="ButtonAllLimit" runat="server" Width="20px" OnClick="ButtonAllLimit_Click" /><br /> <asp:Button ID="ButtonLimit" runat="server" Width="20px" OnClick="ButtonLimit_Click" /><br /> <asp:Button ID="ButtonAllow" runat="server" Width="20px" OnClick="ButtonAllow_Click" /><br /> <asp:Button ID="ButtonAllAllow" runat="server" Width="20px" OnClick="ButtonAllAllow_Click" /> </td> <td style="width:45%"> <asp:ListBox ID="ListBoxLimitStatus" runat="server" SelectionMode="Multiple" Width="100%" Height="120px"></asp:ListBox> </td> </tr> <tr> <td colspan="3" align="center" style="height: 25px"> <asp:Button ID="ButtonConfirm" runat="server" OnClick="ButtonConfirm_Click" meta:resourcekey="ButtonConfirmResource1" /> <asp:Button ID="ButtonCancel" runat="server" OnClick="ButtonCancel_Click" meta:resourcekey="ButtonCancelResource1" /> </td> </tr> </table>接下來是彈跳視窗的aspx.csprotected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // bind ListBox SystemSetOperator SystemSetOper = new SystemSetOperator(); this.ListBoxAllowStatus.DataSource = SystemSetOperator.GetAllITARMStatus("Y", ""); ListBoxAllowStatus.DataTextField = "status_name"; ListBoxAllowStatus.DataValueField = "status_type"; ListBoxAllowStatus.DataBind(); } } // click confirm bottun protected void ButtonConfirm_Click(object sender, EventArgs e) { string LimitStatusList = string.Empty; for (int i = ListBoxLimitStatus.Items.Count - 1; i >= 0; i += -1) { // check LimitStatus listbox's count if (ListBoxLimitStatus.Items.Count - 1 > 0) { LimitStatusList = LimitStatusList + "," + ListBoxLimitStatus.Items[i].Text; } } // check Limit string is null or not string returnValue = string.Empty; if (LimitStatusList.Replace(",", "").Trim() != "") { returnValue = LimitStatusList.Substring(1); } // get return text's clientID string action = Request["action"]; // compose javascript string script = ""; script += "<script>"; script += "window.opener.document.all." + action + ".value='" + returnValue + "';"; script += "window.close();"; script += "</script>"; // Register javascript ClientScript.RegisterClientScriptBlock(typeof(string), "", script); } // click cancel button protected void ButtonCancel_Click(object sender, EventArgs e) { // compose javascript string script = ""; script += "<script>"; script += "window.close();"; script += "</script>"; // Register javascript ClientScript.RegisterClientScriptBlock(typeof(string), "", script); } // click ">>" button protected void ButtonAllLimit_Click(object sender, EventArgs e) { for (int i = ListBoxAllowStatus.Items.Count - 1; i >= 0; i += -1) { ListBoxLimitStatus.Items.Add(ListBoxAllowStatus.Items[i]); ListBoxAllowStatus.Items.Remove(ListBoxAllowStatus.Items[i]); } } // click "<<" button protected void ButtonAllAllow_Click(object sender, EventArgs e) { for (int i = ListBoxLimitStatus.Items.Count - 1; i >= 0; i += -1) { ListBoxAllowStatus.Items.Add(ListBoxLimitStatus.Items[i]); ListBoxLimitStatus.Items.Remove(ListBoxLimitStatus.Items[i]); } } // click ">" button protected void ButtonLimit_Click(object sender, EventArgs e) { for (int i = ListBoxAllowStatus.Items.Count - 1; i >= 0; i += -1) { if (ListBoxAllowStatus.Items[i].Selected == true) { ListBoxLimitStatus.Items.Add(ListBoxAllowStatus.Items[i]); ListBoxAllowStatus.Items.Remove(ListBoxAllowStatus.Items[i]); } } } // click "<" button protected void ButtonAllow_Click(object sender, EventArgs e) { for (int i = ListBoxLimitStatus.Items.Count - 1; i >= 0; i += -1) { if (ListBoxLimitStatus.Items[i].Selected == true) { ListBoxAllowStatus.Items.Add(ListBoxLimitStatus.Items[i]); ListBoxLimitStatus.Items.Remove(ListBoxLimitStatus.Items[i]); } } } ASP.NETC#GridViewListBox 回首頁