我有一個ListView,使用內建的編輯、刪除,但編輯進入後更新按鈕沒有任何反應,aspx元件坑爹的是就算單步執行也不會有錯誤訊息產生...
(有人知道怎麼找出錯誤訊息的話的話請教我...)
所以乾脆直接在ListView_ItemCommand中自己來~~
更新是成功了,但遇到另一個問題,
就是我不知道怎麼回到檢視畫面
想請問各位前輩們該怎麼處理?
下方式部分code
aspx
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div class="card">
<div class="card-header">
<strong class="card-title">試區管理 </strong>
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-3 col-md-3 col-sm-4 col-xs-6 rowCell mt-2">
<asp:TextBox ID="EASubject" runat="server" CssClass="form-control" placeholder="考場名稱"></asp:TextBox>
</div>
<div class="col-lg-3 col-md-3 col-sm-4 col-xs-6 rowCell mt-2">
<asp:TextBox ID="EAAddress" runat="server" CssClass="form-control" placeholder="地址"></asp:TextBox>
</div>
<div class="col-lg-3 col-md-3 col-sm-4 col-xs-6 rowCell mt-2">
<div class="input-group">
<input id="h_EADepID" name="h_EADepID" runat="server" type="hidden" />
<input name="EADepName" type="text" id="EADepName" placeholder="所屬單位" runat="server" class="form-control" />
<div class="input-group-btn">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="../Account/DepList.aspx?prefix=ctl00_ContentPlaceHolder1_&name=EADepName&value=h_EADepID" CssClass="btnColorBox"><i class="btn btn-info fa fa-search"></i></asp:HyperLink>
</div>
</div>
</div>
<div class="col-lg-3 col-md-3 col-sm-4 col-xs-6 rowCell mt-2">
<asp:TextBox ID="EAReservedSeats" runat="server" CssClass="form-control" placeholder="單位保障名額" TextMode="Number" Min="0" pattern="\d*" ></asp:TextBox>
</div>
<div class="col-lg-3 col-md-3 col-sm-4 col-xs-6 rowCell mt-2">
學校:<asp:DropDownList runat="server" ID="EAIsSchool" CssClass="btn btn-info" >
<asp:ListItem Value="">未選擇</asp:ListItem>
<asp:ListItem Value="Y">是學校</asp:ListItem>
<asp:ListItem Value="N">非學校</asp:ListItem>
</asp:DropDownList>
</div>
</div>
<div class="row">
<div class="col-lg-3 col-md-3 col-sm-4 col-xs-6 rowCell mt-2">
<asp:Button ID="btEASerach" runat="server" Text="查詢" CssClass="btn btn-info" OnClick="btEASerach_Click" />
</div>
</div>
</div>
</div>
<asp:ListView ID="ListView_ExamArea" runat="server" DataKeyNames="EANBR" DataSourceID="SqlDataSource_ExamArea" GroupItemCount="3"
OnItemCommand="ListView_ExamArea_ItemCommand" OnPreRender="ListView_ExamArea_PreRender" OnItemDataBound="ListView_ExamArea_ItemDataBound">
<AlternatingItemTemplate>
<td runat="server" style="background-color: #FFF8DC;">
<asp:Label ID="Label2" runat="server" Text='<%# Bind("EANBR") %>' Style="display: none" />
<asp:Label ID="Label3" runat="server" Text='<%# Bind("ENBR") %>' Style="display: none" />
<asp:Label ID="Label4" runat="server" Text='<%# Bind("EAGuid") %>' Style="display: none" />
試區名稱:<asp:Label ID="Label5" runat="server" Text='<%# Eval("EASubject") %>' /><br />
描述:<asp:Label ID="Label6" runat="server" Text='<%# Eval("EADescription") %>' /><br />
Keyword :<asp:Label ID="Label7" runat="server" Text='<%# Eval("EAKeyword") %>' /><br />
單位:<asp:Label ID="Label8" runat="server" Text='<%# Eval("EADepName") %>' /><br />
地址:<asp:Label ID="Label9" runat="server" Text='<%# Eval("EAAddress") %>' /><br />
是否為學校:<asp:Label ID="Label10" runat="server" Text='<%# Eval("EAIsSchool")=="Y"?"是":"否" %>' /><br />
單位保留名額:<asp:Label ID="Label11" runat="server" Text='<%# Eval("EAReservedSeats") %>' /><br />
監場主任數:<asp:Label ID="Label12" runat="server" Text='<%# Eval("EPeople2") %>' /><br />
監場員數:<asp:Label ID="Label13" runat="server" Text='<%# Eval("EPeople3") %>' /><br />
<asp:Button ID="Button1" runat="server" CommandName="Delete" Text="刪除" />
<asp:Button ID="Button2" runat="server" CommandName="Edit" Text="編輯" />
</td>
</AlternatingItemTemplate>
<EditItemTemplate>
<td runat="server" style="background-color: #008A8C; color: #FFFFFF;">
<asp:Label ID="EANBRLabel" runat="server" Text='<%# Bind("EANBR") %>' Style="display: none" ></asp:Label>
試區名稱:<asp:TextBox ID="EASubjectTextBox" runat="server" Text='<%# Bind("EASubject") %>' /><br />
描述:<asp:TextBox ID="EADescriptionTextBox" runat="server" Text='<%# Bind("EADescription") %>' /><br />
Keyword:<asp:TextBox ID="EAKeywordTextBox" runat="server" Text='<%# Bind("EAKeyword") %>' /><br />
單位:<div class="input-group">
<asp:Label ID="EADepIDLabel" runat="server" Text='<%# Bind("EADepID") %>' Style="display: none" ></asp:Label>
<asp:TextBox ID="EADepNameTextBox" runat="server" Text='<%# Bind("EADepName") %>' placeholder="所屬單位" readonly="true"></asp:TextBox>
<div class="input-group-btn">
<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="../Account/DepList.aspx?name=&value=" CssClass="btnColorBox"><i class="btn btn-info fa fa-search"></i></asp:HyperLink>
</div>
</div><br />
地址:<asp:TextBox ID="EAAddressTextBox" runat="server" Text='<%# Bind("EAAddress") %>' /><br />
是否為學校:<asp:TextBox ID="EAIsSchoolTextBox" runat="server" Text='<%# Bind("EAIsSchool") %>' /><br />
單位保留名額:<asp:TextBox ID="EAReservedSeatsTextBox" runat="server" Text='<%# Bind("EAReservedSeats") %>' TextMode="Number" Min="0" pattern="\d*"/><br />
<asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" />
</td>
</EditItemTemplate>
<EmptyDataTemplate>
<table runat="server" style="background-color: #FFFFFF; border-collapse: collapse; border-color: #999999; border-style: none; border-width: 1px;">
<tr>
<td>未傳回資料。</td>
</tr>
</table>
</EmptyDataTemplate>
<EmptyItemTemplate>
<td runat="server" />
</EmptyItemTemplate>
<GroupTemplate>
<tr id="itemPlaceholderContainer" runat="server">
<td id="itemPlaceholder" runat="server"></td>
</tr>
</GroupTemplate>
<ItemTemplate>
<td runat="server" style="background-color: #DCDCDC; color: #000000;">
<asp:Label ID="Label_EANBR" runat="server" Text='<%# Bind("EANBR") %>' Style="display: none" />
<asp:Label ID="Label_ENBR" runat="server" Text='<%# Bind("ENBR") %>' Style="display: none" />
<asp:Label ID="Label_EAGuid" runat="server" Text='<%# Bind("EAGuid") %>' Style="display: none" />
試區名稱:<asp:Label ID="EASubjectLabel" runat="server" Text='<%# Eval("EASubject") %>' /><br />
描述:<asp:Label ID="EADescriptionLabel" runat="server" Text='<%# Eval("EADescription") %>' /><br />
Keyword :<asp:Label ID="EAKeywordLabel" runat="server" Text='<%# Eval("EAKeyword") %>' /><br />
單位:<asp:Label ID="EADepNameLabel" runat="server" Text='<%# Eval("EADepName") %>' /><br />
地址:<asp:Label ID="EAAddressLabel" runat="server" Text='<%# Eval("EAAddress") %>' /><br />
是否為學校:<asp:Label ID="Label1" runat="server" Text='<%# Eval("EAIsSchool")=="Y"?"是":"否" %>' /><br />
單位保留名額:<asp:Label ID="EAReservedSeats" runat="server" Text='<%# Eval("EAReservedSeats") %>' /><br />
監場主任數:<asp:Label ID="EPeople2Label" runat="server" Text='<%# Eval("EPeople2") %>' /><br />
監場員數:<asp:Label ID="EPeople3Label" runat="server" Text='<%# Eval("EPeople3") %>' /><br />
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="刪除" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編輯" />
</td>
</ItemTemplate>
<LayoutTemplate>
<table runat="server">
<tr runat="server">
<td runat="server">
<table id="groupPlaceholderContainer" runat="server" border="1" style="background-color: #FFFFFF; border-collapse: collapse; border-color: #999999; border-style: none; border-width: 1px; font-family: Verdana, Arial, Helvetica, sans-serif;">
<tr id="groupPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
<tr runat="server">
<td runat="server" style="text-align: center; background-color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000;">
<asp:DataPager ID="DataPager1" runat="server" PageSize="12">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />
</Fields>
</asp:DataPager>
</td>
</tr>
</table>
</LayoutTemplate>
<SelectedItemTemplate>
<td runat="server" style="background-color: #008A8C; font-weight: bold; color: #FFFFFF;">
<asp:Label ID="Label_EANBR" runat="server" Text='<%# Bind("EANBR") %>' Style="display: none" />
<asp:Label ID="Label_ENBR" runat="server" Text='<%# Bind("ENBR") %>' Style="display: none" />
<asp:Label ID="Label_EAGuid" runat="server" Text='<%# Bind("EAGuid") %>' Style="display: none" />
試區名稱:<asp:Label ID="EASubjectLabel" runat="server" Text='<%# Eval("EASubject") %>' /><br />
描述:<asp:Label ID="EADescriptionLabel" runat="server" Text='<%# Eval("EADescription") %>' /><br />
Keyword :<asp:Label ID="EAKeywordLabel" runat="server" Text='<%# Eval("EAKeyword") %>' /><br />
地址:<asp:Label ID="EAAddressLabel" runat="server" Text='<%# Eval("EAAddress") %>' /><br />
是否為學校:
<asp:Label ID="EAIsSchoolLabel" runat="server" Text='<%# Eval("EAIsSchool")=="Y"?"是":"否" %>' /><br />
保留名額:<asp:Label ID="EAReservedSeatsLabel" runat="server" Text='<%# Eval("EAReservedSeats") %>' /><br />
監場主任數:<asp:Label ID="EPeople2Label" runat="server" Text='<%# Eval("EPeople2") %>' TextMode="Number" Min="0" pattern="\d*" /><br />
監場員數:<asp:Label ID="EPeople3Label" runat="server" Text='<%# Eval("EPeople3") %>' TextMode="Number" Min="0" pattern="\d*" /><br />
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="刪除" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編輯" />
</td>
</SelectedItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSource_ExamArea" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
DeleteCommand="DELETE FROM [ExamArea] WHERE [EANBR] = @EANBR"
SelectCommand="SELECT * FROM [ExamArea] WHERE ([ENBR] = @ENBR)"
UpdateCommand="UPDATE [ExamArea] SET EADepID=@EADepID,EADepName=@EADepName,EAReservedSeats=@EAReservedSeats [EASubject] = @EASubject, [EADescription] = @EADescription, [EAAddress] = @EAAddress, [EAIsSchool] = @EAIsSchool, [EAKeyword] = @EAKeyword WHERE [EANBR] = @EANBR">
<DeleteParameters>
<asp:Parameter Name="EANBR" Type="Int32" />
</DeleteParameters><SelectParameters>
<asp:QueryStringParameter Name="ENBR" QueryStringField="eid" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="EASubject" Type="String" />
<asp:Parameter Name="EADescription" Type="String" />
<asp:Parameter Name="EAAddress" Type="String" />
<asp:Parameter Name="EAIsSchool" Type="String" />
<asp:Parameter Name="EAKeyword" Type="String" />
<asp:Parameter Name="EADepID" Type="Int32" />
<asp:Parameter Name="EADepName" Type="String" />
<asp:Parameter Name="EAReservedSeats" Type="Int32" />
<asp:Parameter Name="EANBR" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
aspx.cs
protected void btEASerach_Click(object sender, EventArgs e)
{
List<string> sqlWhere = new List<string>() { "[ENBR] = @ENBR" };// "[ENBR] = @ENBR"
if (!string.IsNullOrEmpty(EASubject.Text))
sqlWhere.Add("EASubject like '%" + myString.SQLFilterTextBox(EASubject.Text) + "%'");
if (!string.IsNullOrEmpty(EAAddress.Text))
sqlWhere.Add("EAAddress like '%" + myString.SQLFilterTextBox(EAAddress.Text) + "%'");
//if (!string.IsNullOrEmpty(EADep.Text))
// sqlWhere.Add("EADep='" + myString.SQLFilterTextBox(EADep.Text) + "'");
if (!string.IsNullOrEmpty(EAReservedSeats.Text))
sqlWhere.Add("EAReservedSeats='" + myString.SQLFilterTextBox(EAReservedSeats.Text) + "'");
if (!string.IsNullOrEmpty(EAIsSchool.SelectedValue))
sqlWhere.Add("EAIsSchool='" + myString.SQLFilterTextBox(EAIsSchool.SelectedValue) + "'");
if (sqlWhere.Count > 0)
{
SqlDataSource_ExamArea.SelectCommand = "SELECT * FROM [ExamArea] WHERE " + string.Join(" and ", sqlWhere);
}
SqlDataSource_ExamArea.DataBind();
ListView_ExamArea.DataBind();
}
/*
* ListView切換編輯、刪除、更新、取消的生命週期
ListView_ExamArea_Init
ListView_ExamArea_LayoutCreated
ListView_ExamArea_ItemCreated x n
ListView_ExamArea_Load
ListView_ExamArea_ItemCommand
ListView_ExamArea_ItemCreated x n
ListView_ExamArea_PreRender
ListView_ExamArea_Unload
*/
protected void ListView_ExamArea_PreRender(object sender, EventArgs e)
{
// 重新上colorbox,確保colorbox運作正常
if (ScriptManager.GetCurrent(this.Page) == null)
{
Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "msg", "$('.btnColorBox').colorbox({ iframe: true, innerWidth: iwidth, innerHeight: iheight });", true);
}
else
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "msg", "$('.btnColorBox').colorbox({ iframe: true, innerWidth: iwidth, innerHeight: iheight });", true);
}
}
protected void ListView_ExamArea_ItemCommand(object sender, ListViewCommandEventArgs e)
{
ListView listView = sender as ListView;
ExamDB db = new ExamDB();
switch (e.CommandName)
{
// 不知為啥內建更新會沒動作,所以另外寫
case "Update":
var EANBR = 0;
int.TryParse(((Label)e.Item.FindControl("EANBRLabel")).Text, out EANBR);
var EASubject = myString.SQLFilterTextBox(((TextBox)e.Item.FindControl("EASubjectTextBox")).Text);
var EADescription = ((TextBox)e.Item.FindControl("EADescriptionTextBox")).Text;
var EAKeyword = ((TextBox)e.Item.FindControl("EAKeywordTextBox")).Text;
var EADepID = 0;
int.TryParse(((Label)e.Item.FindControl("EADepIDLabel")).Text, out EADepID);
var EADepName = ((TextBox)e.Item.FindControl("EADepNameTextBox")).Text;
var EAAddress = ((TextBox)e.Item.FindControl("EAAddressTextBox")).Text;
var EAIsSchoolTextBox = ((TextBox)e.Item.FindControl("EAIsSchoolTextBox")).Text; // @@
var EAReservedSeats = 0;
int.TryParse(((TextBox)e.Item.FindControl("EAReservedSeatsTextBox")).Text, out EAReservedSeats);
ExamArea ea = db.ExamArea.Where(p => p.EANBR == EANBR).SingleOrDefault();
if (ea != null)
{
ea.EASubject = EASubject;
ea.EADescription = EADescription;
ea.EAKeyword = EAKeyword;
ea.EADepID = EADepID;
ea.EADepName = EADepName;
ea.EAAddress = EAAddress;
ea.EAIsSchool = EAIsSchoolTextBox;
ea.EAReservedSeats = EAReservedSeats;
db.SaveChanges();
}
//listView.DataBind();
//Response.Redirect(Request.Url.ToString());
//Response.AddHeader("Refresh","0" );
break;
default:
break;
}
}
protected void ListView_ExamArea_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
// 編輯狀態 單位的colorbox連結
var HyperLink2 = (HyperLink)e.Item.FindControl("HyperLink2");
if (HyperLink2 != null)
{
var EADepIDLabel = (Label)e.Item.FindControl("EADepIDLabel");
var EADepNameTextBox = (TextBox)e.Item.FindControl("EADepNameTextBox");
HyperLink2.NavigateUrl = "../Account/DepList.aspx?name=" + EADepNameTextBox.ClientID + "&value=" + EADepIDLabel.ClientID;
}
}
}
找到原因了...UpdateCommand少打一個逗號...XD