天道酬勤,学无止境

如果下拉值更改,则从数据库中获取值并填充所有文本框(Fetch value from Database and fill all textbox if dropdown value change)

问题

我试图填充所有文本框值取决于下拉值选择。 我还通过 SQL 查询填充下拉值。 这是 HTML 代码:

<select name="name" ID="name" class="form-control">
<option value="Select">Select</option>
<?php
$qu="Select DISTINCT Cname from Client_table";
$res=mysqli_query($con,$qu);
while($r=mysqli_fetch_row($res))
{ 
    echo "<option value='$r[0]'> $r[0] </option>";
                                            
}
?> 
</select>
<label>Address</label><input type="text" name="add"/>
<label>Contact</label><input type="text" name="con"/>

数据库:

  Client_table
   C_no             Cname           Caddress          Ccontact
    1               Mohit             xyz             0123645789
    2               Ramesh            abc             7485962110

在这里,我很困惑如何根据下拉选择查找客户的地址和联系方式并使用此值填充文本框

回答1
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname="stack";
// Create connection
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($servername, $username, $password, $dbname);


$qu = "SELECT DISTINCT Cname,Caddress,Ccontact FROM Client_table";
$res = $conn->query($qu);
?>
<select name="name" ID="name" onchange="myFunction()" class="form-control">
<option value="Select">Select</option>
<?php

while($r = mysqli_fetch_row($res))
{ 
    echo "<option data-add='$r[1]'  data-con='$r[2]'  value='$r[0]'> $r[0] </option>";
}
?> 
</select>
<label>Address</label><input type="text" name="add" id="add"/>
<label>Contact</label><input type="text" name="con" id="con"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>


    function myFunction(){
        var address = $('#name').find(':selected').data('add');
        var contact = $('#name').find(':selected').data('con');
        $('#add').val(address);
        $('#con').val(contact);
    }
</script>
回答2

将查询更改为

Select DISTINCT Cname,Caddress,Ccontact from Client_table

并更改以下语句

echo "<option value='$r[0]'> $r[0] </option>";

echo '<option data-add="'.$r[1].'" data-con="'.$r[2].'" value='.$r[0].'> '.$r[0].' </option>';

修改选择为

<select name="name" ID="name" class="form-control" onchange="myFunction()"> 

添加以下javascript

function myFunction(){
 var index = document.getElementById("name").selectedIndex;
    var add = document.getElementById("name").options[index].getAttribute("data-add");
var con = document.getElementById("con").options[index].getAttribute("data-con");
document.getElementsByName("add")[0].value = add;
document.getElementsByName("con")[0].value = con;
}

JsFiddle 代码

回答3

一点说明:当您第一次访问页面( index.php )时,数据被加载到组合框中。 每个option标签接收客户端编号作为值 ( C_no ) 和其他详细信息,作为文本。

另一方面,当您在组合框中选择一个值时,您需要从数据库中获取额外的客户端数据。 为此,您需要 jquery 和 ajax。 有了它,当组合框的值发生变化时,您必须向服务器( getClient.php )发出 ajax 请求。 作为响应,它从数据库表中向您发送相应的数据。 然后你把数据放在你喜欢的任何地方——在这种情况下是在输入中。

一点建议:我建议您开始使用准备好的语句 - 以避免 sql 注入 - 并且不要将用于从 db 获取数据的 php 代码与 html 代码混合在一起。 把它们分开就行了。 首先,获取页面顶部的数据并将其保存到数组中。 然后,在 html 代码中,仅使用数组来遍历获取的数据。


索引.php

<?php
require 'connection.php';

$sql = 'SELECT C_no, Cname, Caddress FROM Client_table ORDER BY Cname ASC';

// Prepare the statement.
$statement = mysqli_prepare($connection, $sql);

// Execute the statement.
mysqli_stmt_execute($statement);

// Get the result set from the prepared statement.
$result = mysqli_stmt_get_result($statement);

// Fetch the data and save it into an array for later use.
$clients = mysqli_fetch_all($result, MYSQLI_ASSOC);

// Free the memory associated with the result.
mysqli_free_result($result);

// Close the prepared statement. It also deallocates the statement handle.
mysqli_stmt_close($statement);
?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes" />
        <meta charset="UTF-8" />
        <!-- The above 3 meta tags must come first in the head -->

        <title>Demo</title>

        <script src="https://code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>

        <script type="text/javascript">
            $(document).ready(function () {
                $('#name').change(function (event) {
                    var cNo = $(this).val();

                    if (cNo === 'Select') {
                        $('#address').val('');
                        $('#contact').val('');
                    } else {
                        $.ajax({
                            method: 'post',
                            dataType: 'json',
                            url: 'getClient.php',
                            data: {
                                'cNo': cNo
                            },
                            success: function (response, textStatus, jqXHR) {
                                if (!response) {
                                    alert('No client data found.');
                                } else {
                                    $('#address').val(response.address);
                                    $('#contact').val(response.contact);
                                }
                            },
                            error: function (jqXHR, textStatus, errorThrown) {
                                alert('An error occurred. Please try again.');
                            },
                            cmplete: function (jqXHR, textStatus) {
                                //...
                            }
                        });
                    }
                });
            });
        </script>

        <style type="text/css">
            body {
                padding: 30px;
            }

            input, select {
                display: block;
                margin-bottom: 10px;
            }
        </style>
    </head>
    <body>

        <div class="container">
            <select name="name" id="name" class="form-control">
                <option value="Select">- Select -</option>
                <?php
                foreach ($clients as $client) {
                    ?>
                    <option value="<?php echo $client['C_no']; ?>">
                        <?php echo $client['Cname'] . ' (' . $client['Caddress'] . ')'; ?>
                    </option>
                    <?php
                }
                ?> 
            </select>

            <label>Address</label>
            <input type="text" id="address" name="address"/>

            <label>Contact</label>
            <input type="text" id="contact" name="contact"/>
        </div>

    </body>
</html>

获取客户端.php

<?php

require 'connection.php';

// Validate posted value.
if (!isset($_POST['cNo']) || empty($_POST['cNo'])) {
    echo json_encode(FALSE);
    exit();
}

$cNo = $_POST['cNo'];

$sql = 'SELECT 
            Caddress AS address,
            Ccontact AS contact
        FROM Client_table 
        WHERE C_no = ? 
        LIMIT 1';

// Prepare the statement.
$statement = mysqli_prepare($connection, $sql);

/*
 * Bind variables for the parameter markers (?) in the 
 * SQL statement that was passed to prepare(). The first 
 * argument of bind_param() is a string that contains one 
 * or more characters which specify the types for the 
 * corresponding bind variables.
 * 
 * @link http://php.net/manual/en/mysqli-stmt.bind-param.php
 */
mysqli_stmt_bind_param($statement, 'i', $cNo);

// Execute the statement.
mysqli_stmt_execute($statement);

// Get the result set from the prepared statement.
$result = mysqli_stmt_get_result($statement);

// Fetch the data and save it into an array for later use.
$clientDetails = mysqli_fetch_array($result, MYSQLI_ASSOC);

// Free the memory associated with the result.
mysqli_free_result($result);

// Close the prepared statement. It also deallocates the statement handle.
mysqli_stmt_close($statement);

if (!isset($clientDetails) || !$clientDetails) {
    echo json_encode(FALSE);
} else {
    echo json_encode($clientDetails);
}

exit();

连接.php

<?php 

// Db configs.
define('HOST', 'localhost');
define('PORT', 3306);
define('DATABASE', 'your-db');
define('USERNAME', 'your-user');
define('PASSWORD', 'your-pass');

// Display eventual errors.
error_reporting(E_ALL);
ini_set('display_errors', 1); /* SET IT TO 0 ON A LIVE SERVER! */

// Enable internal report functions.
$mysqliDriver = new mysqli_driver();
$mysqliDriver->report_mode = (MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// Create db connection.
$connection = mysqli_connect(HOST, USERNAME, PASSWORD, DATABASE, PORT);

创建表语法

DROP TABLE IF EXISTS `Client_table`;

CREATE TABLE `Client_table` (
  `C_no` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `Cname` varchar(100) DEFAULT NULL,
  `Caddress` varchar(100) DEFAULT NULL,
  `Ccontact` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`C_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `Client_table` (`C_no`, `Cname`, `Caddress`, `Ccontact`)
VALUES
    (1,'Mohit','xyz','0123645789'),
    (2,'Ramesh','abc','7485962110'),
    (5,'Tanja','def','1232347589'),
    (6,'Paul','pqr','0797565454'),
    (7,'Mohit','klm','0123645789');
回答4

JavaScript 文件:

 function getdata(str) {

 if (str == "")

 {

     document.getElementById("no_of_sms").value = "";
     document.getElementById("no_of_days").value = "";
     document.getElementById("descr").value = "";
     document.getElementById("state-pkg").value = "";
     document.getElementById("price-pkg").value = "";

     return;

}

if (window.XMLHttpRequest) 

{ 

    xmlhttp = new XMLHttpRequest();

} 
else
{

    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
        var data = xmlhttp.responseText.split("#");
        var db_no_of_sms = decodeURIComponent(data[0]);
        var db_no_of_days = decodeURIComponent(data[1]);
        var db_f_state = decodeURIComponent(data[2]);
        var db_f_price = decodeURIComponent(data[3]);
        var db_f_desc = decodeURIComponent(data[4]);
        document.getElementById("no_of_sms").value=db_no_of_sms;
        document.getElementById("no_of_days").value = db_no_of_days;
        document.getElementById("descr").value = db_f_desc;
        document.getElementById("state-pkg").value = db_f_state;
        document.getElementById("price-pkg").value = db_f_price;
}


  }

xmlhttp.open("GET","functions/getdata.php?q="+str,true);

xmlhttp.send();

}

PHP文件:

<?php
        $q = $_GET['q'];
         $host="localhost";
          $db_username="root";
          $db_password=""; 

          $con = mysqli_connect("$host", "$db_username", "$db_password"); 
           if (!$con)
             {
            die('Could not connect: ' . mysqli_error($con));
              }
             mysqli_select_db($con,"business_details");
             $sql="SELECT * FROM packages where p_name = '$q'";
            $result = mysqli_query($con,$sql);
             $row=mysqli_fetch_assoc($result);
           $db_no_of_sms = $row['no_of_sms'];
          $db_no_of_days = $row['days'];
         $db_f_state = $row['state'];
          $db_f_price = $row['price'];
        $db_f_desc = $row['description'];
         echo 
     $db_no_of_sms."#".$db_no_of_days."#".$db_f_state."#".$db_f_price."#".$db_f_desc;

    ?>
回答5
  type: "GET",
  dataType: "json",                      
  success: function(data) {
      console.log(data[0]['qty']);

      $.each(data, function(key, value) {
          $('#qty').val(data[0]['qty']);
      });
  }
});

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 数据更改时刷新组合框的首选方法是什么?(What is the preferred method of refreshing a combo box when the data changes?)
    问题 数据更改时刷新组合框的首选方法是什么? 如果表单已打开且组合框数据已加载,您如何刷新组合框的内容而不必关闭并重新加载表单? 你必须对组合框上的 Click 事件做些什么吗? 如果每次有人单击组合框时都会对数据库进行命中,这似乎是应用程序的潜在减慢速度。 回答1 您必须确定: 1)你的数据什么时候改变? 如果它依赖于其他用户的活动,因此您无法在不查询数据库的情况下确定它是否已更改,您可以找出刷新的最佳时间,例如表单加载或每次单击,或者您可以使用计时器控件来刷新特定时间的数据。 2) 你的用户什么时候需要知道这个变化? 尝试了解用户了解更改的紧迫性。 跟他们说。 根据这一点,决定何时需要刷新数据。 最后: 没有这样做的正确方法。 这取决于软件结构、用户需求和特定情况。 希望能帮助到你。 祝你好运! 更新: 我可以添加一个我最近使用的解决方案。 如果有什么不清楚的,就问吧。 我假设您从MS SQL Server刷新了组合。 如果是这样的话, 1.创建一个表,在其中存储 Combo 的数据更改日期或版本。 2. onClick 事件或使用计时器控件,它将每 5 分钟(或任何其他时间)检查更改,您可以将组合的上次更改日期(或版本)与我们最后存储的表中的上次更改(或版本)进行比较日期(或版本),并且仅当日期(或版本)发生更改时,才刷新组合。 3.您可以将最后日期(或版本
  • Excel:如何基于数据表创建动态数据验证列表(Excel: How to create dynamic data validation list based on data table)
    问题 想象一下,我正在用Excel为我的孩子编写菜单计划器(比我的实际问题更容易描述)... 我有可用食物的清单:苹果,香蕉,胡萝卜,枣,鸡蛋,鱼等。 我有一个孩子清单:John,Karen,Lional,Mike等。 然后,我有一个简单的表格,列出了每个孩子喜欢的食物:在约翰的专栏下,苹果,香蕉和鱼对着一个“ x”,其他对着空白。 J K L M --------------- a x x x b x x c x x x d x e x x f x 现在,在我的菜单计划器的主要部分中,我希望有一些具有数据验证功能的单元格,这些单元格允许我使用上面的“喜欢”表为每个孩子选择食物: Name Food A2 B2 单元格A2将包含数据验证,该数据验证将为所有孩子的名字(J,K,L,M)提供单元内下拉菜单(这很简单-我可以做到这一点!) 单元格B2需要包含所选孩子动态喜欢的食物的动态生成列表。 因此,如果我在A2中选择John,则B2列表将为{a,b,f}。 如果我选择Lionel,则B2列表将为{a,b,c,e}。 显然,随着孩子口味的变化,我可以通过添加/删除“ x”来更新“喜欢”表,B2中的下拉列表将自动更新。 如何为单元格B2创建下拉验证列表? (我宁愿不诉诸VBA来做到这一点) 回答1 我假设您的数据表在A1:E7范围内。 步骤1.为每个孩子创建选择列表
  • Excel:如何基于数据表创建动态数据验证列表(Excel: How to create dynamic data validation list based on data table)
    问题 想象一下,我正在用Excel为我的孩子编写菜单计划器(比我的实际问题更容易描述)... 我有可用食物的清单:苹果,香蕉,胡萝卜,枣,鸡蛋,鱼等。 我有一个孩子清单:John,Karen,Lional,Mike等。 然后,我有一个简单的表格,列出了每个孩子喜欢的食物:在约翰的专栏下,苹果,香蕉和鱼对着一个“ x”,其他对着空白。 J K L M --------------- a x x x b x x c x x x d x e x x f x 现在,在我的菜单计划器的主要部分中,我希望有一些具有数据验证功能的单元格,这些单元格允许我使用上面的“喜欢”表为每个孩子选择食物: Name Food A2 B2 单元格A2将包含数据验证,该数据验证将为所有孩子的名字(J,K,L,M)提供单元内下拉菜单(这很简单-我可以做到这一点!) 单元格B2需要包含所选孩子动态喜欢的食物的动态生成列表。 因此,如果我在A2中选择John,则B2列表将为{a,b,f}。 如果我选择Lionel,则B2列表将为{a,b,c,e}。 显然,随着孩子口味的变化,我可以通过添加/删除“ x”来更新“喜欢”表,B2中的下拉列表将自动更新。 如何为单元格B2创建下拉验证列表? (我宁愿不诉诸VBA来做到这一点) 回答1 我假设您的数据表在A1:E7范围内。 步骤1.为每个孩子创建选择列表
  • 根据另一个选择显示一个选择的下拉值(Show drop down values of a select based on another select)
    问题 我有一个“项目”表,如下所示 Project_ID | Client_ID --------------------------- P1 C1 P2 C1 P3 C2 P4 C2 P5 C3 P6 C3 我有一个select id="1"显示所有客户端 ID。 我正在显示另一个select id="2"以显示分配给客户端 ID 的所有项目。 基本上我想显示选择ID选项值=“2”基于从选择ID =“1”选择的值。 例如,如果有人选择 <option value="C3">C3</option> 那么下面应该有 <select id="2"> <option value="P5">P5</option> <option value="P6">P6</option> </select> 我认为 Ajax 是答案,但我不知道正确的方法。 回答1 您可以为选择框的 onChange 事件添加一个事件监听器。 在更改事件中获取选择框的值并使用 ajax 请求将其值发送到服务器,并根据第一个值获取要在第二个选择框中显示的值并将其显示在第二个选择框中。 基于国家选择的国家选择示例代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Populate City Dropdown Using
  • 无需提交即可从html表单中的下拉框中获取所选值(Getting selected value from drop down box in a html form without submit)
    问题 如何从html表单的下拉框元素中获取所选项目的文本? (使用python)当我使用鼠标从下拉框中选择一项时,如何将值存储到变量中? (即不使用提交按钮) 这是针对我在仅支持 Python 的应用引擎中执行的应用程序。 回答1 您的问题表明对 Web 应用程序的工作方式存在一些误解。 用户必须在浏览器中输入地址才能访问应用程序。 这将向服务器发送请求。 服务器代码(用python编写)接收到这个请求并有机会发送一个答案。 答案是通常用 HTML 编写的文档。 本文档的某些部分可以是动态的,即由 python 代码生成。 文档的其他部分可以是静态的。 然后浏览器在用户窗口上呈现文档。 之后,您的 Python 代码可以了解浏览器窗口上发生的事情或运行 Python 代码的任何部分的唯一方法,就是让浏览器发送另一个请求。 这可能发生在许多情况下,最常见的是: 用户点击另一个 url 的链接,使浏览器向这个新 url 发送另一个请求。 用户单击submit按钮,使浏览器将表单作为请求提交到表单的action属性中配置的地址。 实际页面中的一些代码,通常用 ECMAscript(也称为javascript )编写,在后台发出请求。 后者是你想要的。 您必须在javascript 中编写一些代码,以使浏览器将下拉列表中选择的信息发送到服务器。 这样你在服务器上的 python
  • 如何清除 ASP.NET MVC 应用程序中文本框的发布数据?(How to clear the post data for a textbox in an ASP.NET MVC application?)
    问题 默认情况下,使用 <%= Html.TextBox("somefield")%> 呈现的文本框使用来自发布数据的值,例如,如果页面上存在验证错误,则从发布的数据中检索该值并用于值属性。 现在,在某些情况下,我希望能够清除该值,换句话说,我希望文本框为空,我不希望 MVC 从发布的数据中获取值并将其用于 value 属性,如何我可不可以做? 如何清除帖子数据? 谢谢 回答1 ModelState.Remove("key"); 回答2 从模型状态中删除值,如下所示: ViewData.ModelState.Remove("somefield"); 回答3 我发现我必须同时删除 ModelState 和更改模型,好像 MVC 首先尝试 ModelState,然后是模型: ModelState.Remove("key"); model.key = ""; 如果您不想丢失模型的错误状态,您可以像这样更改值: ModelState.SetModelValue("Captcha", new ValueProviderResult(null, string.Empty, System.Globalization.CultureInfo.InvariantCulture)); model.key = "";
  • 使用插件时的角度表单验证问题(angular forms validation issues when using plugins)
    问题 我有一个使用 Angular 构建的单页应用程序,但表单存在一些问题。 表单使用一个复选框一个下拉菜单和两个文本框。 第一个文本框(名称)没有验证。 check-Box 使用名为“iCheck”的第三方插件。 下拉使用一个名为“bootstrap-select”的插件。 验证使用名为“Jquery 验证引擎”的库。 plunker 设置在这里 预期的行为是。 简而言之,如果选中复选框,则需要文本框和下拉框。 1)在页面加载时,因为表单不脏(没有为任何控件提供任何值)如果我单击保存按钮,它应该点击保存功能,因为控件没有验证,因此应该没有验证消息提示屏幕。 2)如果我单击复选框。 下拉菜单和下面的文本框成为必需的。 这意味着下拉和文本框都具有条件​​验证(Jquery 验证引擎的功能),它已经设置并工作。 所以现在如果我点击保存,它不应该点击保存功能并显示验证提示。 3)它应该继续限制函数访问并显示验证错误提示,除非表单控件有效,即在下拉列表中选择了某个值并填充了文本框。 4) 如果我取消选中,第 3 点中描述的验证就会消失。 但发生的事情是: a) 在页面加载时,如果我点击保存按钮,它不会点击保存功能。 b) 如果我单击复选框,它仍然没有点击保存功能,并且下拉列表和文本框上都显示验证错误提示,这很好,这就是它应该如何表现。 c) 当填写所需的文本框时,它会使表单 ng
  • 带有混合文本/ id搜索的jQuery UI自动完成(jQuery UI Autocomplete with hybrid text/id search)
    问题 在使jQuery的自动完成小部件对我有用的过程中,我遇到了很多麻烦。 我正在使用来自服务器的键/值对列表。 我有以下要求: 如果用户从窗口小部件中选择一个值,我想将ID传递给服务器。 如果用户没有选择一个值并输入原始文本,或者修改了一个已选择的值,那么我希望清除ID字段,而只将原始文本发送到服务器。 假设someAjaxFunction返回自动完成窗口小部件期望的对象数组: {label:label, value:key} 。 最初,我将自动完成小部件设置如下: $(input).autocomplete({ source: sourceFunction, minLength: 1 }); 即使将鼠标悬停在项目之一上,也可以更改选择,从而将$(input)引用的文本框中的文本更改为基础键,而不是标签。 从用户交互的角度来看,这是非常不希望的-确实,我要进行调查的原因是因为我正在构建的网站的用户始终对输入的似乎变成随机数的文字感到困惑! 我在文本框下添加了一个隐藏字段,并实现了select()和focus()事件,以便像这样隐藏ID: $(input).autocomplete({ source: sourceFunction, minLength: 1 focus: function(event, ui) { $(idField).val(ui.item.value); $
  • Javascript 克隆节点不会将所有值从克隆的对象复制到新对象(Javascript clone node is not copying all values from cloned to new object)
    问题 <div class="container"> <select class="btn" name="item"> <option>Alpha</option> <option>Beta</option> <option>Gamma</option> <option>Theta</option> </select> <input type="text" class="desc" name="desc"> </div> 在此示例中,“选择”下拉列表中默认选择的元素是“Alpha”。 我想用值克隆完整的节点。 如果我在下拉列表中选择不同的值并在输入框中输入一些文本,然后克隆节点,则只会克隆文本框值。 新对象中“选择”下拉列表的值保持默认值(Alpha)。 为什么“选择”与“输入”的克隆行为不同? var parent = document.querySelector(".container"); var button = parent.querySelector(".btn"); var textbox = parent.querySelector(".desc"); > textbox.value < "some random text" > button.value < "Gamma" var cloned = parent.cloneNode(true); var
  • 根据其他下拉列表的选择填充一个下拉列表(Populate one dropdown list based on the selection of other dropdown list)
    问题 我想创建两个下拉列表,类别和项目。 如果我选择名为car的类别之一,则项目下拉列表中应包含Honda,Volvo和Nissan。 如果我选择一个名为phone的类别,则项目下拉列表应具有此iPhone,Samsung,Nokia。 我怎样才能做到这一点? 我知道我无法使用纯HTML做到这一点。 回答1 工作演示http://jsfiddle.net/kasperfish/r7MN9/3/(带有jquery) cars=new Array("Mercedes","Volvo","BMW","porche"); phones=new Array('Samsung','Nokia','Iphone'); populateSelect(); $(function() { $('#cat').change(function(){ populateSelect(); }); }); function populateSelect(){ cat=$('#cat').val(); $('#item').html(''); if(cat=='car'){ cars.forEach(function(t) { $('#item').append('<option>'+t+'</option>'); }); } if(cat=='phone'){ phones.forEach(function(t
  • 什么是差异执行?(What is differential execution?)
    问题 我偶然发现了一个堆栈溢出问题,即差速执行如何工作? ,它的回答很长而且很详细。 所有这一切都是有道理的……但是当我完成后,我仍然不知道到底差分执行到底是什么。 到底是什么 回答1 修改。 这是我的第N次尝试来解释它。 假设您有一个简单的确定性过程,该过程重复执行,始终遵循相同的语句执行或过程调用顺序。 该过程调用自己将需要的任何内容顺序地写入FIFO,然后从FIFO的另一端读取相同数量的字节,如下所示:** 被调用的过程将FIFO用作内存,因为它们读取的内容与先前执行时写入的内容相同。 因此,如果这次他们的论点恰巧与上次有所不同,他们可以看到这一点,并使用该信息做任何他们想做的事情。 要开始使用它,必须有一个初始执行,其中只进行写入,不进行读取。 对称地,应该有一个最终执行,其中只有阅读发生而没有写作。 因此,存在一个“全局”模式寄存器,其中包含两个位,一个允许读取,另一个允许写入,如下所示: 初始执​​行是在模式01下完成的,因此仅完成写操作。 该过程调用可以看到该模式,因此他们知道没有以前的历史记录。 如果他们想创建对象,则可以将标识信息放入FIFO(无需存储在变量中)。 中间执行是在模式11下完成的,因此读写都会发生,并且过程调用可以检测到数据更改。 如果有需要更新的对象,则从FIFO中读取并写入其标识信息,以便可以访问它们,并在必要时进行修改。
  • 如何使用下拉列表过滤 Kendo UI MVC 网格(How to filter a Kendo UI MVC grid using a dropdown list)
    问题 我有一个剑道网格,它通过将下拉列表中的值推送到内置的剑道过滤器中进行过滤。 在文本框中键入值并进行搜索时,我可以使用相同的方法搜索网格。 这是我的剑道网格和下拉菜单 @(Html.Kendo().DropDownListFor(model => model.MyObject.ID) .Name("Objects").DataTextField("Value").DataValueField("Key") .BindTo(@Model.MyObjectList).AutoBind(true) .HtmlAttributes(new { id = "selectedObject" }) <a class="button" onclick="searchGrid()" id="search">Search</a> @(Html.Kendo().Grid<MyViewModel>() .Name("MyGrid").HtmlAttributes(new { style = " overflow-x:scroll;" }) .Columns(columns => { columns.Bound(a => a.MyObject.Name).Title("Field 1"); columns.Bound(a => a.Column2).Title("Field 2"); }
  • 使用 MySQL 条目填充下拉列表(Populating drop downs with MySQL entries)
    问题 我有一个 MySQL 数据库,其中包含 2 个表。 一个是events表,包含事件名称和其他详细信息。 另一个是instance表。 此表将events表链接venue地表并添加日期,因此每一行都是链接事件的一个实例。 我正在制作这些活动的内部使用的活动预订表格。 我想允许通过下拉列表选择要预订的活动。 所以,我用事件名称填充了一个下拉列表: $qEvent = "SELECT event_name, event_id FROM events"; $rEvent = mysqli_query($dbc,$qEvent); echo '<select>'; while ($row = mysqli_fetch_assoc($rEvent)) { echo '<option value="'.$row['event_id'].'">'.$row['event_name'].'</option>'; } echo '</select>'; 我现在想要做的是,对于选定的事件,获取与该事件关联的所有实例,并用日期填充另一个下拉列表。 我可以用 PHP 做到这一点,还是需要深入研究 Javascript? 我想我只需要某种方式来获取下拉选择的 event_id 值,然后基于该值进行查询,但如果没有 Javascript,我不知道如何。 回答1 您应该考虑使用 Javascript 或
  • 根据选择的下拉列表项从 MySQL 动态填充多个输入字段(Dynamically fill multiple input fields from MySQL depending on the drop list item selected)
    问题 我已经在网站上搜索过这个,但我空手而归。 这是我想要做的: 用户从下拉列表中选择一系列选项中的一个两个输入字段更改以反映此选择,使用从我的数据库中提取的数据填充输入框 请参阅下图以直观地表达我的意思: 我知道我将需要 JavaScript 来实现这个解决方案,但我的 JS 技能并不那么热门(我想我今天脑力暂时失效了)! 这是我到目前为止的代码(不要担心过时的 PHP): <select name="item" id="item"> <?php while($row = mysql_fetch_array($result)) { $item_id = $row['item_id']; $item_category = $row['item_category']; $item_title = $row['item_title']; $item_price = $row['item_price']; $item_description = $row['item_description']; echo "<option value=\"".$item_id."\">".$item_title."</option>"; } ?> </select> <script> function update_txt() { price = document.getElementById(
  • ASP.NET MVC Web 应用程序中视图逻辑和域逻辑之间的混淆(Confusion between view logic and domain logic in a ASP.NET MVC Web Application)
    问题 我在域/应用程序逻辑和用户界面逻辑之间感到困惑。 为了说明我想要确定的内容,我将在下面描述一个虚构的程序以供说明: (1) 想象一个带有 3 个级联下拉列表的小型应用程序。 当您选择一个下拉列表时,它会触发一个 jQuery Ajax GET,它最终命中 MVC 控制器,提供先前选择的下拉列表的选定值。 控制器返回下一个下拉列表的允许选项。 javacript(在视图中)将这些结果排列到一个下拉列表中。 等等。 因此,每次您选择一个下拉列表时,都会填充下一个。 (2) 现在扔扳手.. 有一些例外。 假设用户在第一个下拉列表中选择“FOO”或“BAR”,则行为会发生变化,因此第二个下拉列表被禁用,第三个下拉列表将显示一个文本框。 我的问题是,在 MVC 的上下文中,这个“决策”逻辑的合适位置是什么? 例如负责做出这些决定的代码,就像我在(2)中解释的那样。 我一直把它放在最方便的地方是在视图的 javascript 中。 我只是编写了 javascript 来测试第一个框是“FOO”还是“BAR”,然后禁用第二个下拉列表,并将第三个下拉列表换成文本框。 但这对我来说不太合适。 因为它似乎应该是业务逻辑,因此代码应该属于某个地方的域层。 但这也感觉不太对。 所以我觉得我在兜圈子。 有人可以对这个小设计有所了解吗? 回答1 不要分裂太多头发,也不要过于狂热地追求保持图案的纯‡
  • 在 mvc 实体框架中的下拉选择中填充文本框(Fill textbox on dropdown selection in mvc entity framework)
    问题 我正在使用 Asp.net MVC5 和实体框架。我是这两种技术的新手。 基本上我创建了一个表单,当我从 DropDown 中选择值时,在这个表单中可以使用一个 DropDown。 我想填写此表单上也可用的文本框。 这是我的控制器 public class ChainController : Controller { private hcEntities db = new hcEntities(); // GET: Chain public ActionResult Index() { ViewBag.name = new SelectList(db.chains,"code","name"); return View(db.chains.ToList()); } } 看法:- <div class="form-horizontal"> <hr /> <div class="form-group"> <label class="col-sm-2 control-label"> Select Chain </label> <div class="col-md-3"> @Html.DropDownList("name" , null, new { @class = "form-control" }) </div> </div> @using (@Html.BeginForm())
  • 如何允许SSRS中的下拉列表参数的默认值为“ —全部—”?(How do I allow a drop-down list parameter in SSRS to have a default value of “— All — ”?)
    问题 我有一个基于存储过程填充的下拉列表-该部分工作正常。 根据“调查ID”的不同,它会动态填充 但是我不希望它说<Select a Value> ,而应该说" -- All -- " ,因为这就是报告的工作方式。 到目前为止,我尝试创建一个虚拟数据集,该数据集返回Null和“ all”的标签,但是没有用。 也许我做错了吗? 我用这个: select distinct Name, ID from LK_TargetTypes where Name like '%pizza' union select '-- All --', null ; 所以LK_TargetTypes是一些不相关的表。 我想将其与其他DDL值合并。 这是另一张图片: 任何提示,谢谢。 回答1 我同意克里斯的回答,但是我要补充一点,有时您想将默认值添加到并非全部且也不是单一选择的多重值中。 通常,我在表变量中设置两个数据集,每个数据集用于报告。 与此类似: “ AvailableValues”数据集可以是: declare @Table Table ( personID int identity, person varchar(8)); insert into @Table values ('Brett'),('John'),('Peter'); select * from @Table “
  • 如何动态更改C#组合框或文本框中的自动完成条目?(How can I dynamically change auto complete entries in a C# combobox or textbox?)
    问题 我在C#中有一个组合框,我想使用自动完成建议,但是我希望能够根据用户类型来更改自动完成条目,因为可能的有效条目太多了,无法在启动时填充AutoCompleteStringCollection 。 例如,假设我让用户输入名称。 我有一个可能的名字列表(“ Joe”,“ John”)和一个姓氏列表(“ Bloggs”,“ Smith”),但是如果我每个都有一千个,那将是一百万个可能的字符串-太多,无法放入自动完成条目。 因此,最初,我只希望使用名字作为建议(“ Joe”,“ John”),然后在用户键入名字(“ Joe”)之后,我想删除现有的自动完成条目并替换为他们添加了一组新名称,其中包括所选的名字以及可能的姓氏(“ Joe Bloggs”,“ Joe Smith”)。 为了做到这一点,我尝试了以下代码: void InitializeComboBox() { ComboName.AutoCompleteMode = AutoCompleteMode.SuggestAppend; ComboName.AutoCompleteSource = AutoCompleteSource.CustomSource; ComboName.AutoCompleteCustomSource = new AutoCompleteStringCollection(); ComboName
  • 自动填充文本框,取决于下拉值(Auto fill text box depending on Drop Down value)
    问题 这可能是一个愚蠢的问题,但我想澄清如何解决。 我遇到过很多文章,这些文章可以根据使用jQuery和Ajax的下拉菜单中的选择来设置文本框的值。 我的问题是,根据5个下拉菜单中的选择尝试执行相同操作时。 我将ID值存储在数据库中,该值应用于填充文本框。 任何人都可以通过多个下拉菜单来指导如何解决此问题。 到目前为止,这是我的代码: <?php $sql1="SELECT Schlungen FROM schulung as s"; $result=mysql_query($sql1); echo "<p align='left'> <strong>Schulung 1</strong> <select name='Schlungen1'> <option value default></option>"; while ($row = mysql_fetch_array($result)) { echo "<option value='" . $row['Schlungen'] . "'>" . $row['Schlungen'] . " </option>"; } echo "</select>"; ?> <?php error_reporting(0); //Drop Down for Schulung 2 $sql2="SELECT Schlungen FROM
  • 从ASP.NET MVC下拉列表中获取值(Getting values from an asp.net mvc dropdownlist)
    问题 有人可以帮助我从asp.net mvc的下拉列表中获取值吗? 我可以从文本框等中获取值,但是,如何获取这两件事... 从控制器类中获取下拉列表的“ Selected Item Value” 从控制器类获取下拉列表的所有项目列表 谢谢 回答1 您可以像使用文本框一样从下拉列表中获取选定的值。 使用默认模型绑定 [AcceptVerbs(HttpVerbs.Post)] public ActionResult GetValueExample(string MyList) { //MyList will contain the selected value //... } 或来自FormCollection [AcceptVerbs(HttpVerbs.Post)] public ActionResult GetValueExample(FormCollection form) { string val = form["MyList"]; //... } 或根据要求 [AcceptVerbs(HttpVerbs.Post)] public ActionResult GetValueExample(string MyList) { string val = Request.Form["MyList"]; //or val = Request["MyList"]; //... }