我有一個GV,我需要動態構建在過去180天內有過活動數據庫寫入的用戶列表。一頁獲得會員身份用戶名並將其寫入 表1。然後,我在該表上執行SELECT Distinct以填充DDL並將該值寫入Table2。問題是,當我嘗試設置DDL選擇的值通過SelectedValue='<%# Bind("DeliverPartTo") %>'
我得到:問題頁面生成時從DropDown列表中選擇DB值
「DDL_DeliverPartTo」具有的SelectedValue,因爲它不在項目列表中存在哪些無效。 參數名:價值
下面是代碼:
<asp:TemplateField HeaderText="DeliverPartTo" SortExpression="DeliverPartTo">
<ItemTemplate>
<asp:DropDownList ID="DDL_DeliverPartTo" runat="server" SelectedValue='<%# Bind("DeliverPartTo") %>' DataSourceID="SQLTechs" DataTextField="RequestedBy" DataValueField="RequestedBy"
Height="25px" Width="135px" AutoPostBack="True" AppendDataBoundItems="true"
OnDataBound="SqlDS_DeliverPartTo_DataBinding" OnSelectedIndexChanged="DDL_DeliverPartTo_SelectedIndexChanged"
>
<asp:ListItem Text="" Enabled="true" Selected="True" Value='-1'></asp:ListItem>
<asp:ListItem Text="Stock" Enabled="true" Value='-1'></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="SQLTechs" runat="server"
ConnectionString="<%$ ConnectionStrings:inventory_v2ConnectionString %>"
SelectCommand="SELECT DISTINCT [RequestedBy] FROM [Process_PartRequests]">
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
<asp:SqlDataSource ID="SqlDataSource1"
runat="server"
ConnectionString="<%$ ConnectionStrings:inventory_v2ConnectionString %>"
SelectCommand="SELECT Process_WarrantyTracker.ID, Process_WarrantyTracker.RequestNumber, Process_PartRequests.DateRequested, Process_RequestStatuses.ID AS StatusID,
Process_RequestStatuses.StatusCode, Process_PartRequests.CATicketNumber, Process_PartRequests.SystemSerialNumber,
Models_PriModels.PriModel + '-' + Models_SecModels.SecModel + '-' + Models_FormFactor.Form AS Model, Part_Catalog.OEMPartCode,
Part_Groups.GroupType + ' - ' + Part_Groups.GroupName AS Groups, Process_PartRequests.RequestedBy, Models_OEMs.Manufacturer AS OEM,
Process_WarrantyTracker.DateOrderedFromOEM, Process_WarrantyTracker.OrderedByICGAdmin, Process_WarrantyTracker.OEMWorkOrderNumber,
Process_WarrantyTracker.PartSerialNumber, Process_WarrantyTracker.OrderRecievedDate, Process_WarrantyTracker.DeliverPartTo,
Process_WarrantyTracker.ProblemFlag, Process_WarrantyTracker.PartOfMultiPartOrder, Process_WarrantyTracker.ShipperTrackingNo,
Process_WarrantyTracker.ReturnOrderShipped, Process_WarrantyTracker.Comment1, Process_WarrantyTracker.Comment2
FROM Process_WarrantyTracker INNER JOIN
Process_PartRequests ON Process_WarrantyTracker.RequestNumber = Process_PartRequests.RequestNumber INNER JOIN
Process_RequestStatuses ON Process_PartRequests.RequestStatus = Process_RequestStatuses.ID INNER JOIN
Models ON Process_PartRequests.Model = Models.ID INNER JOIN
Models_FormFactor ON Models.FormFactor = Models_FormFactor.ID INNER JOIN
Models_OEMs ON Models.Manufacturer = Models_OEMs.ID INNER JOIN
Models_PriModels ON Models.PriModel = Models_PriModels.ID INNER JOIN
Models_SecModels ON Models.SecModel = Models_SecModels.ID INNER JOIN
Part_Catalog ON Process_PartRequests.OEMPartCode = Part_Catalog.ID INNER JOIN
Part_Groups ON Part_Catalog.GroupType = Part_Groups.ID
WHERE Process_RequestStatuses.ID != 4">
</asp:SqlDataSource>
protected void SqlDS_DeliverPartTo_DataBinding(object sender, EventArgs e)
{
try
{
GridViewRow gr = (GridViewRow)((DataControlFieldCell)((DropDownList)sender).Parent).Parent;
HiddenField RequestNumber = (HiddenField)gr.FindControl("RequestNumber");
string ReqNum = RequestNumber.Value;
string query = "SELECT [DeliverPartTo] FROM [Process_WarrantyTracker] WHERE [RequestNumber] = @RequestNumber ";
DropDownList DDL_DeliverPartTo = (DropDownList)GridView1.FindControl("DDL_DeliverPartTo");
SqlConnection connectionString = new SqlConnection(ConfigurationManager.ConnectionStrings["inventory_v2ConnectionString"].ConnectionString);
connectionString.Open();
SqlCommand cmd = new SqlCommand(query, connectionString);
Object returnValue;
cmd.CommandText = query;
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@RequestNumber", ReqNum);
cmd.Connection = connectionString;
returnValue = cmd.ExecuteScalar();
connectionString.Close();
DDL_DeliverPartTo.SelectedValue = returnValue.ToString();
}
catch (Exception ex)
{
//Response.Write(ex.Message);
}
}
protected void DDL_DeliverPartTo_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow gr = (GridViewRow)((DataControlFieldCell)((DropDownList)sender).Parent).Parent;
DropDownList DDL_DeliverPartTo = (DropDownList)gr.FindControl("DDL_DeliverPartTo");
HiddenField RequestNumber = (HiddenField)gr.FindControl("RequestNumber");
string ReqNum = RequestNumber.Value;
string query = "UPDATE [Process_WarrantyTracker] SET [DeliverPartTo][email protected] WHERE [RequestNumber] = @RequestNumber ";
SqlConnection connectionString = new SqlConnection(ConfigurationManager.ConnectionStrings["inventory_v2ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand(query, connectionString);
cmd.Connection.Open();
cmd.Parameters.Add("@DeliverPartTo", DDL_DeliverPartTo.SelectedValue);
cmd.Parameters.Add("@RequestNumber", ReqNum);
cmd.CommandType = CommandType.Text;
Object ddlValues;
ddlValues = cmd.ExecuteScalar();
cmd.Connection.Close();
cmd.Connection.Dispose();
Response.Redirect("Admin-WarrantyTracker.aspx");
}
'Text'不是'DropDownList'的屬性。 –
糟糕,這是一個錯誤的複製/粘貼。它應該是SelectedValue ='<%#綁定(「DeliverPartTo」)%>',這會導致所描述的問題。 – user1431356
你的錯誤消息告訴你,你有一個項目,你試圖設置爲選中,不在你的DropDownList。您是否已驗證'DeliverPartTo'的所有可能性都在您的DDL中? –