如何在ASP.net中的gridview控件内单击一下来验证下拉列表并更新数据库? [英] How to validate the dropdownlist and update database on a single click inside a gridview control in ASP .NET?
问题描述
我在更新面板中有一个GridView。 GridView的最后一列有一个LinkButton(< pre lang =HTML> ID =lnkUpdate
)。此LinkButton用于使用JavaScript函数(Validate(lnkUpdate))验证GridView的其他列中的一些DropDowns。我想使用此LinkButton更新数据库中的数据。如果我使用OnClick =btnSave_Data_Click,我可以成功更新数据库中的数据但是,我必须删除OnClientClick =return Validate(this)。
论坛中的专家可以帮我找到一种方法来保存这两个事件。我的意思是我希望能够更新数据库以及验证DropDownList。
提前致谢
我尝试了什么:
Validate(lnkUpdate)的代码是:
< script type = 文本/ JavaScript的跨度>>
function 验证(lnkUpdate){
var txtIncident,ddlStatus,ddlReason;
var row = lnkUpdate.parentNode.parentNode;
var controls = row.getElementsByTagName( *跨度>);
for ( var i = 0 ; i< controls.length; i ++){
if (controls [i] .id.indexOf( txtIncident)!= -1){
txtIncident = controls [i];
}
if (controls [i] .id.indexOf( < span class =code-string> ddlStatus)!= -1){
ddlStatus = controls [i];
}
if (controls [i] .id.indexOf( < span class =code-string> ddlReason)!= -1){
ddlReason = controls [i];
}
}
var message = ;
if (ddlStatus.value == ){
message + = 请选择状态;
} else if ((ddlStatus.value == 制作)&&(ddlReason.value == < span class =code-string>)){
message + = 请选择原因;
} else if ((ddlStatus.value == 错过)&&(ddlReason.value == < span class =code-string>)){
message + = 请选择原因;
} else if (
((ddlStatus.value == 错过)&&(ddlReason.value == 数据可用性:客户)&&(txtIncident.value == < span class =code-string>))
||((ddlStatus.value == Miss)&&(ddlReason.value == 数据可用性:戴尔其他)&&(txtIncident.value == ))
||((ddlStatus.value == Miss)&&(ddlReason .value == 数据A vailablility:戴尔报告团队)&& (txtIncident.value == ))
|| ((ddlStatus.value == Miss)&&(ddlReason.value == < span class =code-string> 数据可用性:供应商)&&(txtIncident.value == ))
|| ((ddlStatus.value == Miss)&&(ddlReason.value == < span class =code-string> 数据完整性:客户)&&(txtIncident.value == ))
|| ((ddlStatus.value == Miss)&&(ddlReason.value == < span class =code-string> 数据完整性:戴尔其他)&&(txtIncident.value == ))
|| ((ddlStatus.value == Miss)&&(ddlReason.value == < span class =code-string> 数据完整性:戴尔报告团队)&&(txtIncident.value == ))
|| ((ddlStatus.value == Miss)&&(ddlReason.value == < span class =code-string> 数据完整性:供应商)&&(txtIncident.value == ))
|| ((ddlStatus.value == Miss)&&(ddlReason.value == < span class =code-string> 重复实例)&&(txtIncident.value == ))
|| ((ddlStatus.value == Miss)&&(ddlReason.value == < span class =code-string> 外部因素)&&(txtIncident.value == ))
|| ((ddlStatus.value == Miss)&&(ddlReason.value == < span class =code-string> 报告修改:客户)&&(txtIncident.value == ))
){
message + = 请输入事件#;
} 其他 {
}
// 显示错误消息。
if (message!= ){
alert(message);
return false ;
}
返回 true ;
}
< / script>
和btnSave_Data_Click的代码是:
受保护的子btnSave_Data_Click(发送者作为对象,e作为EventArgs)处理btnSave_Data.Click
Dim cmd作为SqlCommand =新的SqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText =sp_Insrt_Updt_Rcrd
cmd.Parameters.AddWithValue(@ Report_Date,Today())
cmd.Parameters.AddWithValue(@ Name,)
cmd.Parameters.AddWithValue(@ Report_Time,)
cmd.Parameters.AddWithValue( @Type,)
cmd.Parameters.AddWithValue(@ Effort,)
cmd.Parameters.AddWithValue(@ Account, )
cmd.Parameters.AddWithValue(@ Method,)
cmd.Parameters.AddWithValue(@ Format,)
cmd.Parameters.AddWithValue(@ Status,)
cmd.Parameters.AddWit hValue(@ Reason,)
cmd.Parameters.AddWithValue(@ Incident,)
cmd.Parameters.AddWithValue(@ Action ,)
cmd.Parameters.AddWithValue(@ Designation,)
cmd.Parameters.AddWithValue(@ Location,)
cmd.Parameters.AddWithValue(@ Support_Region,)
cmd.Parameters.AddWithValue(@ Badge,)
cmd.Parameters.AddWithValue(@ DateTime_IST_India,)
cmd.Parameters.AddWithValue(@ DateTime_CST_Round_Rock,)
cmd.Parameters.AddWithValue( @DateTime_MST_Cyberjaya,)
cmd.Parameters.AddWithValue(@ DateTime_GMT_Casablanca,)
cmd.Parameters.AddWithValue(@ Week_Working_Day_Number, )
cmd.Parameters.AddWithValue(@ Month_Working_Day_Number,)
cmd.Parameters.AddWithValue(@ NT_Login,)
cmd.Parameters.AddWithValue(@ Report_U ID,今天()& Finally_03)
Dim dt As DataTable = New DataTable
Dim con As SqlConnection = New SqlConnection(strConnString)
Dim sda As SqlDataAdapter = New SqlDataAdapter
cmd.Connection = con
con.Open()
sda.SelectCommand = cmd
sda.Fill(dt)
结束Sub
如果我理解正确,你想执行更新,同时在LinkButton
事件中进行验证。如果是这样,那么为LinkButton
(lnkUpdate)附加一个Onclick
事件,如:
OnClick =lnkUpdate_Click
然后在你的代码中做这样的事情背后:
受保护的 Sub lnkUpdate_Click( sender As Object ,e As EventArgs)
Dim lb As LinkButton = DirectCast (sender,LinkButton)
Dim row As GridViewRow = DirectCast (lb.NamingContainer,GridViewRow)
如果行 IsNot 没什么 然后
' 选择行索引
Dim index As Integer = row.RowIndex
访问此处的控件
Dim ddlStatus 作为 DropDownList = DirectCast (row.FindControl( DropDownListID),DropDownList)
' 您的更新代码
结束 如果
结束 Sub
' ============= ==========================================
' Telerik提供的服务(www.telerik.com)
' 由NRefactory提供的转换。
' Twitter:@telerik
' Facebook:facebook.com/ telerik
' ================ ======================================= 跨度>
I have one GridView inside an update panel. Last column of the GridView has a LinkButton (<pre lang="HTML">ID="lnkUpdate"
). This LinkButton is used to Validate a few DropDowns in other Columns of GridView using JavaScript function (Validate(lnkUpdate)). I want to update the Data in a DataBase using this LinkButton. I can successfully update the data in the database if I use OnClick="btnSave_Data_Click" however, I have to remove OnClientClick="return Validate(this)".
Can the experts in the forum help me find a way to keep both of these events. I mean I want to be able to Update the Database as well as Validate the DropDownList.
Thanks in advance
What I have tried:
The code for Validate(lnkUpdate) is:
<script type="text/javascript">
function Validate(lnkUpdate) {
var txtIncident, ddlStatus, ddlReason;
var row = lnkUpdate.parentNode.parentNode;
var controls = row.getElementsByTagName("*");
for (var i = 0; i < controls.length; i++) {
if (controls[i].id.indexOf("txtIncident") != -1) {
txtIncident = controls[i];
}
if (controls[i].id.indexOf("ddlStatus") != -1) {
ddlStatus = controls[i];
}
if (controls[i].id.indexOf("ddlReason") != -1) {
ddlReason = controls[i];
}
}
var message = "";
if (ddlStatus.value == "") {
message += "Please select Status";
} else if ((ddlStatus.value == "Make") && (ddlReason.value == "")) {
message += "Please select Reason";
} else if ((ddlStatus.value == "Miss") && (ddlReason.value == "")) {
message += "Please select Reason";
} else if (
((ddlStatus.value == "Miss") && (ddlReason.value == "Data Availablility: Customer") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Data Availablility: Dell Other") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Data Availablility: Dell Reporting Team") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Data Availablility: Vendor") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Data Integrity: Customer") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Data Integrity: Dell Other") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Data Integrity: Dell Reporting Team") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Data Integrity: Vendor") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Duplicate Instance") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "External Factors") && (txtIncident.value == ""))
|| ((ddlStatus.value == "Miss") && (ddlReason.value == "Report Modifications: Customer") && (txtIncident.value == ""))
) {
message += "Please enter Incident#";
} else {
}
//Display error message.
if (message != "") {
alert(message);
return false;
}
return true;
}
</script>
and the code for btnSave_Data_Click is:
Protected Sub btnSave_Data_Click(sender As Object, e As EventArgs) Handles btnSave_Data.Click
Dim cmd As SqlCommand = New SqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "sp_Insrt_Updt_Rcrd"
cmd.Parameters.AddWithValue("@Report_Date", Today())
cmd.Parameters.AddWithValue("@Name", "")
cmd.Parameters.AddWithValue("@Report_Time", "")
cmd.Parameters.AddWithValue("@Type", "")
cmd.Parameters.AddWithValue("@Effort", "")
cmd.Parameters.AddWithValue("@Account", "")
cmd.Parameters.AddWithValue("@Method", "")
cmd.Parameters.AddWithValue("@Format", "")
cmd.Parameters.AddWithValue("@Status", "")
cmd.Parameters.AddWithValue("@Reason", "")
cmd.Parameters.AddWithValue("@Incident", "")
cmd.Parameters.AddWithValue("@Action", "")
cmd.Parameters.AddWithValue("@Designation", "")
cmd.Parameters.AddWithValue("@Location", "")
cmd.Parameters.AddWithValue("@Support_Region", "")
cmd.Parameters.AddWithValue("@Badge", "")
cmd.Parameters.AddWithValue("@DateTime_IST_India", "")
cmd.Parameters.AddWithValue("@DateTime_CST_Round_Rock", "")
cmd.Parameters.AddWithValue("@DateTime_MST_Cyberjaya", "")
cmd.Parameters.AddWithValue("@DateTime_GMT_Casablanca", "")
cmd.Parameters.AddWithValue("@Week_Working_Day_Number", "")
cmd.Parameters.AddWithValue("@Month_Working_Day_Number", "")
cmd.Parameters.AddWithValue("@NT_Login", "")
cmd.Parameters.AddWithValue("@Report_UID", Today() & "Finally_03")
Dim dt As DataTable = New DataTable
Dim con As SqlConnection = New SqlConnection(strConnString)
Dim sda As SqlDataAdapter = New SqlDataAdapter
cmd.Connection = con
con.Open()
sda.SelectCommand = cmd
sda.Fill(dt)
End Sub
If I understood you correctly, you wanted to execute an update and at the same time do the validation inLinkButton
event. If so, then attach anOnclick
event for yourLinkButton
(lnkUpdate) like:
OnClick="lnkUpdate_Click"
Then do something like this in your code behind:
Protected Sub lnkUpdate_Click(sender As Object, e As EventArgs) Dim lb As LinkButton = DirectCast(sender, LinkButton) Dim row As GridViewRow = DirectCast(lb.NamingContainer, GridViewRow) If row IsNot Nothing Then 'gets the row index selected Dim index As Integer = row.RowIndex 'access the controls here Dim ddlStatus As DropDownList = DirectCast(row.FindControl("DropDownListID"), DropDownList) 'your update code here End If End Sub '======================================================= 'Service provided by Telerik (www.telerik.com) 'Conversion powered by NRefactory. 'Twitter: @telerik 'Facebook: facebook.com/telerik '=======================================================
这篇关于如何在ASP.net中的gridview控件内单击一下来验证下拉列表并更新数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!