如何在ASP.net中的gridview控件内单击一下来验证下拉列表并更新数据库? [英] How to validate the dropdownlist and update database on a single click inside a gridview control in ASP .NET?

查看:71
本文介绍了如何在ASP.net中的gridview控件内单击一下来验证下拉列表并更新数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在更新面板中有一个GridView。 GridView的最后一列有一个LinkBut​​ton(< pre lang =HTML> ID =lnkUpdate

)。此LinkBut​​ton用于使用JavaScript函数(Validate(lnkUpdate))验证GridView的其他列中的一些DropDowns。我想使用此LinkBut​​ton更新数据库中的数据。如果我使用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_Cyber​​jaya,)

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

解决方案

如果我理解正确,你想执行更新,同时在 LinkBut​​ton 事件中进行验证。如果是这样,那么为 LinkBut​​ton (lnkUpdate)附加一个 Onclick 事件,如:



OnClick =lnkUpdate_Click



然后在你的代码中做这样的事情背后:

 受保护的  Sub  lnkUpdate_Click( sender  As   Object ,e  As  EventArgs) 
Dim lb As LinkBut​​ton = DirectCast (sender,LinkBut​​ton)
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 in LinkButton event. If so, then attach an Onclick event for your LinkButton (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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆